Hadoop Streaming, C#, & Azure with External Libraries

本文关键字:Azure with External Libraries amp Streaming Hadoop | 更新日期: 2023-09-27 18:36:11

我正在使用Hadoop Streaming在Azure的Linux集群上运行C#中的mapreduce作业。但是,我需要使用 MathNet.Numerics 库。我使用 NuGet 包管理器抓取了 dll,然后将 dll 作为参考文件包含在 lib 文件夹中,并确保生成操作设置为:嵌入的资源。

每当我尝试运行以下命令时:

hadoop jar ./hadoop-streaming-2.6.0.jar -input wasb:///CSV/ -output
 wasb:///Output/reducer1.txt -file ./Mapper.exe -mapper Mapper.exe 
-file ./Reducer.exe -reducer Reducer.exe

我在输出文件中收到以下错误:

System.IO.FileNotFoundException: Could not load file or assembly 
'MathNet.Numerics, Version=3.11.0.0, Culture=neutral, PublicKeyToken=null'
 or one of its dependencies.
File name: 'MathNet.Numerics, Version=3.11.0.0, Culture=neutral, PublicKeyToken=null'

我还尝试复制到 MathNet.Numerics.dll 复制到集群,并在初始命令中包含带有标记的文件:

hadoop jar ./hadoop-streaming-2.6.0.jar -input wasb:///CSV/ -output
 wasb:///Output/reducer1.txt -file ./Mapper.exe -mapper Mapper.exe 
-file ./Reducer.exe -reducer Reducer.exe -file ./MathNet.Numerics.dll

但结果是一样的。

Hadoop Streaming, C#, & Azure with External Libraries

在 VS 2014+ 中的窗口上- 右键单击解决方案资源管理器中的"引用"。-选择:管理 NuGet 包单击浏览,然后输入您尝试安装的库,它应该获取您需要的所有内容,包括依赖项。

在带有 Mono 的 Linux 上:-https://docs.nuget.org/contribute/setting-up-the-nuget-development-environment- 向下滚动到 Linux 安装说明

我没有在 Mono 上使用过 NuGet,但我认为它应该以完全相同的方式工作。我至少会尝试一下,看看你是否只是在某处缺少依赖项,因为它应该会自动为你神奇地获取它们。