我正在 U-SQL 中注册和使用自定义程序集来访问文件以从中获取数据。在使用其依赖项注册程序集时,数据文件作为“附加文件”上传(我使用的是 VS 2015)。
但是,作业失败并出现 System.IO.FileNotFoundException,自定义程序集无法找到该文件。访问文件的方法引发异常。
是否有特定的方法来访问该文件?还是必须放置在特定位置?
该文件放置在与自定义程序集及其依赖项在数据湖存储中相同的目录中(如果这是相关详细信息)。
最佳答案
发现问题了。 当我注册程序集时,Visual Studio 自动生成以下脚本:
USE DATABASE [master];
DROP ASSEMBLY IF EXISTS [MaxMind.Db];
CREATE ASSEMBLY [MaxMind.Db] FROM @"swebhdfs://exploreadls.azuredatalakestore.net/assemblies/MaxMind.Db.dll"
WITH ADDITIONAL_FILES = (@"swebhdfs://exploreadls.azuredatalakestore.net/assemblies/GeoLite2-City.mmdb" AS "GeoLite2-City");
请注意,第二个文件注册为“GeoLite2-City”,不带“.mmdb”扩展名,并且程序集使用完整限定名称访问该文件。
我必须更改此脚本并重新运行它,之后它就完美运行了。
您可以通过门户查看 Visual Studio 提交的作业,方法是转到您的 ADLS 帐户并选择“查看所有作业”->“查看脚本”,并可以“复制脚本”以将其用于其他作业。
关于azure - 无法使用自定义程序集访问 U-SQL 代码隐藏中的自定义文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852061/