USQL + Python - 架构不匹配定义
USQL + Python - Schema not matching definition
我正在尝试将数据传递到 Data Lake Analytics 中的 python 脚本中。
我已将其剥离以清楚地显示错误。我知道 python 实际上没有做任何事情...:-)
我有一个很简单的table
@FormattedCasinoData =
SELECT int.Parse(UserID) AS [UserID],
int.Parse(ModelID) AS [ModelID],
float.Parse(Value) AS [Value]
FROM @CasinoData
WHERE UserID != "UserID"
ORDER BY UserID
FETCH 1000 ROWS;
所以table格式是整型、整型、浮点型。
当我尝试运行这个
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def usqlml_main(df):
return df
";
@pythonOutput =
REDUCE @FormattedCasinoData ON [UserID]
PRODUCE [UserID] int, [ModelID] int, [Value] float
USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @pythonOutput
TO @"adl://mydatalake.azuredatalakestore.net/myFolder/PythonOutput20171208.csv"
USING Outputters.Csv();
我收到以下错误:
"Python returned dataframe schema (System.Int32, System.Int32, System.Double) does match U-SQL schema (System.Int32, System.Int32, System.Single)"
当我在输出中明确定义 "float" 时,知道为什么 U-SQL 模式期望第三列为 System.Single。
谢谢!
抱歉回复晚了。这一定是漏掉了。
在 C# 中,float
是 System.Single
的同义词(参见 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/float)。
你应该在你的 reducer 模式中指定 double
作为你的目标类型。
我正在尝试将数据传递到 Data Lake Analytics 中的 python 脚本中。
我已将其剥离以清楚地显示错误。我知道 python 实际上没有做任何事情...:-)
我有一个很简单的table
@FormattedCasinoData =
SELECT int.Parse(UserID) AS [UserID],
int.Parse(ModelID) AS [ModelID],
float.Parse(Value) AS [Value]
FROM @CasinoData
WHERE UserID != "UserID"
ORDER BY UserID
FETCH 1000 ROWS;
所以table格式是整型、整型、浮点型。
当我尝试运行这个
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def usqlml_main(df):
return df
";
@pythonOutput =
REDUCE @FormattedCasinoData ON [UserID]
PRODUCE [UserID] int, [ModelID] int, [Value] float
USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @pythonOutput
TO @"adl://mydatalake.azuredatalakestore.net/myFolder/PythonOutput20171208.csv"
USING Outputters.Csv();
我收到以下错误:
"Python returned dataframe schema (System.Int32, System.Int32, System.Double) does match U-SQL schema (System.Int32, System.Int32, System.Single)"
当我在输出中明确定义 "float" 时,知道为什么 U-SQL 模式期望第三列为 System.Single。
谢谢!
抱歉回复晚了。这一定是漏掉了。
在 C# 中,float
是 System.Single
的同义词(参见 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/float)。
你应该在你的 reducer 模式中指定 double
作为你的目标类型。