我正在 U-SQL 中注册和使用自定义程序集,这些程序集访问文件以从中获取数据。在注册程序集及其依赖项时,数据文件作为“附加文件”上传(我使用的是 VS 2015)。
但是,作业失败并出现 System.IO.FileNotFoundException,自定义程序集无法找到该文件。在访问文件的方法中引发异常。
是否有特定的方式来访问该文件?还是必须将其放置在特定位置?
该文件与自定义程序集放置在同一目录中,并且它是数据湖存储中的依赖项(如果这是相关详细信息)。
我正在 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 帐户并选择“查看所有作业”->“查看脚本”,并且可以“复制脚本”以将其用于其他作业。