从在HDInsight群集中运行的Map / Reduce作业访问Azure表存储

时间:2014-03-24 19:47:08

标签: c# azure mapreduce azure-table-storage hdinsight

我们在用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

1 个答案:

答案 0 :(得分:1)

听起来,包含CoudTable,CloudStorageAccount和CloudTableClient的程序集在运行映射器的群集上不可用。这应该是Microsoft.WindowsAzure.Storage.dll或Microsoft.WindowsAzure.StorageClient.dll,具体取决于您使用的API的版本。

尝试在Configure方法中添加config.FilesToInclude.Add("Microsoft.WindowsAzure.Storage.dll");

如果这没有帮助,请分享命令行&输出或代码&您尝试启动该职位的例外细节。