如何从C#Mapper访问HDInsight Blob存储?

时间:2016-01-28 09:27:11

标签: c# hadoop mapreduce hdinsight

我有一个“Windows上的Hadoop”群集,其中blob存储(log-container位于logfstore)作为默认存储配置(输入和输出从那里读取和写入)。

我正在使用MapReduce SDK在C#中编写和管理mapper和reducer。

如何从C#代码中访问blob存储上的其他文件?

我尝试了以下内容:

  1. File.ReadAllLines(@"/log100by10/Input/filelist_short.txt");

    结果:找不到路径'c:\ log100by10 \ Input \ filelist_short.txt'的一部分 例外

  2. File.ReadAllLines(@"log100by10/Input/filelist_short.txt");

    结果:找不到路径'c:\ apps \ temp \ hdfs \ nm-local-dir \ usercache \ admin \ appcache \ application_1453123456785_0006 \ container_1453123456785_0006_01_000002 \ log100by10 \ Input \ filelist_short.txt'

  3. File.ReadAllLines(@"wasb://log100by10/Input/filelist_short.txt");

    结果:不支持给定路径的格式

  4. File.ReadAllLines(@"wasb://log-container@logfstore/log100by10/Input/filelist_short.txt");

    结果:不支持给定路径的格式

  5. 整个映射器看起来像:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using Microsoft.Hadoop.MapReduce;
    
    namespace AzureTest.MultiTest
    {
        class MultiTestMapper : MapperBase
        {
    
            public override void Map(string inputLine, MapperContext context)
            {
                string path = @"/log100by10/Input/filelist_short.txt";
                try
                {
                    string[] text = File.ReadAllLines(path);
                    context.EmitKeyValue("****input ",text[0]);
                }
                catch(Exception ex)
                {
                    context.EmitKeyValue("****error ", ex.Message);
                }
            }
        }
    }
    

0 个答案:

没有答案