我正在尝试将数据传递到Data Lake Analytics中的python脚本。
我已将其剥离,以清楚地显示错误。我知道python实际上并没有做任何事情......: - )
我有一个非常简单的表
@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;
因此表格式为int,int,float。
当我尝试运行此
时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返回的数据帧架构(System.Int32,System.Int32,System.Double)确实匹配U-SQL架构(System.Int32,System.Int32,System.Single)"
任何想法为什么U-SQL架构期望System.Single为第三列,当我明确定义" float"在输出中。
谢谢!
答案 0 :(得分:1)
很抱歉迟到的回复。这肯定已经过去了。
在C#中,float
是System.Single
的同义词(请参阅https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/float)。
您应该在reducer的架构中指定double
作为目标类型。