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# 中,floatSystem.Single 的同义词(参见 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/float)。

你应该在你的 reducer 模式中指定 double 作为你的目标类型。