0

マップ削減ジョブからマネージド Hive テーブル データを読み取りたいです。外部ハイブ テーブルから作成された別のテーブルから作成されたマネージド ハイブ テーブルがあります。最終的なマネージド Hive テーブルでマップ削減ジョブを実行したいと考えています。管理されているテーブルには、デフォルトで「char 1」ASCII文字のセパレーターがあることを読みました。だから私はこれをしました:

public static final String SEPARATOR_FIELD = new String(new char[] {1});

その後、ループでこれを行いました:

end = rowTextObject.find(SEPARATOR_FIELD, start);

しかし、map reduce jar を実行すると、上記の行と以下の行で Illegal Argument 例外が発生します。

public void map(LongWritable key, Text rowTextObject, Context context) throws IOException, InterruptedException

PS: mapreduce ジョブでマネージド ハイブ テーブルを読み取るために github でプロジェクトを調べましたが、その @ https://github.com/facebook/hive-io-experimentalを理解できません。

4

1 に答える 1

0

以下のような入力ファイルあるとします(たとえばxyz.txt ) :
_ _ _
_ _ _
_ _ _デフォルトの区切り文字(たとえば)。ここで、map reduce を使用して既にハイブ テーブルにロードされているこのファイルを解析するために、map メソッドで次のようなことを行います。





public class MyMapper extends Mapper<LongWritable, Text, Text, Text>{
    public void map(LongWritable key, Text value,Context context) throws java.io.IOException ,InterruptedException
    {

        String[]vals=value.toString().split("\\001");
        context.write(new Text(vals[0]),new Text("1"));
     }

}

あなたのドライバーの方法は、次のように通常のものになります:-

job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(MyMapper.class);
FileInputFormat.addInputPath(job, new Path(xyz.txt));

したがって、最終的な出力は、私が指定した
map
メソッドに基づいて次のようになります。?





于 2013-07-26T08:32:50.607 に答える