首页 > 解决方案 > 为什么会产生这个 no assembly found 的错误?master.extpython

问题描述

我正在尝试使用 Python UDO。一个简单的代码给出错误,因为未找到程序集

这是让 python 在 ADLA 上工作的第一个测试

REFERENCE ASSEMBLY [ExtPython];

DECLARE @myScript = @"

def usqlml_main(df):
    return df
";

@t  = 
    SELECT * FROM 
            (VALUES
            ("key1",100),
            ("key1",101),
            ("key2",200),
            ("key3",202)
        ) AS 
              D( partitionkey, value );

@m  =
    REDUCE @t ON partitionkey
    PRODUCE partitionkey string, value string
    USING new Extension.Python.Reducer(pyScript:@myScript);


OUTPUT @m
  TO "/output.csv"
  USING Outputters.Csv();

这应该运行错误是程序集'master.ExtPython'不存在。

在此处输入图像描述

标签: python-3.xu-sql

解决方案


首先,您需要在本地数据库中注册您的程序集。所以首先创建一个脚本来做到这一点。

DROP ASSEMBLY IF EXISTS [ExtPython];

CREATE ASSEMBLY [ExtPython] FROM @"Assemblies/ExtPython.dll";

将您的 dll 放在程序集文件夹中,以便脚本可以获取并注册它。

默认的 U-SQL 本地文件夹是 ..\AppData\Local\USQLDataRoot。因此,创建 AppData\Local\USQLDataRoot\Assemblies 之类的文件夹。

或者您可以将上面的代码放在您的脚本中引用之前。


推荐阅读