我使用hadoop流在azure的linux集群上用c#运行mapreduce作业。但是,我需要使用mathnet.numerics库。我使用nuget包管理器获取dll,然后将dll作为引用文件包含在lib文件夹中,并确保build操作设置为:embedded resource。
每当我尝试运行以下命令时:
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
但结果是一样的。
1条答案
按热度按时间vmjh9lq91#
在vs 2014+的windows上-右键单击解决方案资源管理器中的“引用”-选择:manage nuget packages单击browse,然后键入您尝试安装的库,它将获取您需要的所有内容,包括依赖项。
在使用mono的linux上:-https://docs.nuget.org/contribute/setting-up-the-nuget-development-environment -向下滚动到linux安装说明
我没有在mono上使用nuget,但我认为它应该以完全相同的方式工作。我至少会尝试一下,看看你是否只是缺少一个依赖的地方,因为它应该自动神奇地为你得到它们。