我们在用C#编写的4节点HDInsight群集上运行M / R作业。其中一个Mapper类使用Azure表存储来应用特定于业务的规则。
如果没有CloudTable,CloudTableClient&创建CloudStorageAccount对象。
但是,在添加相同的对象引用时,它会出错并且作业执行停止。部分代码段如下:
public class TopProgMapper : MapperBase
{
CloudTable table = null;
CloudStorageAccount storageAccount = null;
CloudTableClient tableClient = null;
//The above objects are instantiated and queried in the Mapper ctor
public TopProgMapper()
{
// instantiation code here, which currently has been commented
}
}
如上所述,即使没有创建对象引用,Mapper的ctor中的代码也被注释为执行错误输出。
从MapReduceResult对象(Info.ExitCode)收到的错误代码为1,表示M / R代码存在问题。但是,其余的代码运行得非常好,并且在未创建上述引用对象时产生正确的输出。
对此的任何帮助都将受到高度赞赏。如果需要,将提供其他详细信息。
谢谢&问候, Subho
答案 0 :(得分:1)
听起来,包含CoudTable,CloudStorageAccount和CloudTableClient的程序集在运行映射器的群集上不可用。这应该是Microsoft.WindowsAzure.Storage.dll或Microsoft.WindowsAzure.StorageClient.dll,具体取决于您使用的API的版本。
尝试在Configure方法中添加config.FilesToInclude.Add("Microsoft.WindowsAzure.Storage.dll");
。
如果这没有帮助,请分享命令行&输出或代码&您尝试启动该职位的例外细节。