HBaseのに一括挿入データ

insert.java   

 

パッケージcn.ls.insert。

輸入cn.ls.util.HbaseConn;

輸入org.apache.hadoop.hbase.TableName。
輸入org.apache.hadoop.hbase.client.Connection。
輸入org.apache.hadoop.hbase.client.ConnectionFactory;
輸入org.apache.hadoop.hbase.client.HTableInterface。
輸入org.apache.hadoop.hbase.client.Put;
輸入org.apache.hadoop.hbase.util.Bytes。

インポートにjava.io.IOException;
輸入はjava.util.ArrayList;
輸入はjava.util.List;

/ **
* 2016年12月30日に管理者が作成しました。
* /
publicクラスを挿入{

公共の静的な無効メイン(文字列[]引数)はIOExceptionが{スロー

/ *接続hbaseConn =新しいHbaseConn()getHbaseConn();
HTableInterfaceテーブルは=(HTableInterface)hbaseConn.getTable(TableName.valueOf(引数[0]));
=新しいのPut(Bytes.toBytes(引数[1]))入れて置きます。// zookey
put.add(Bytes.toBytes(引数[2])、Bytes.toBytes(引数[3])、Bytes.toBytes(引数[4]))。//列族、修飾子、値
table.put(置きます)。
table.close(); //释放资源
hbaseConn.close(); * /

実際には/ * HBaseの、列の概念がない、列はデータ* /である
(// insertOne);
insertBatch();

}

プライベートの静的な無効insertBatchは、()はIOExceptionをスロー{
//批量插入
接続hbaseConn =新しいHbaseConn()getHbaseConn();
HTableInterfaceテーブル=(HTableInterface)hbaseConn.getTable(TableName.valueOf( "testCreate1228"));
一覧リスト<入れ>を=新しいのArrayList <入れ>();
以下のために(int型私= 0;私は<10; iの++){
=新入れ入れ入れ((Bytes.toBytesを"20161130abc" + I));
put.add(Bytes.toBytes( "F1")、Bytes.toBytes( "lie1" + I)、Bytes.toBytes( "20161130abc" + I));
list.add(置きます)。
}
table.put(リスト)。
table.close();
hbaseConn.close();
}

プライベートの静的な無効insertOneは、()はIOExceptionをスロー{
//插入单条
接続hbaseConn =新しいHbaseConn()getHbaseConn();
HTableInterfaceテーブル=(HTableInterface)hbaseConn.getTable(TableName.valueOf( "testCreate1228"));
プット置く=新プット(Bytes.toBytes( "20161130abc3"));
put.add(Bytes.toBytes( "F1")、Bytes.toBytes( "lie1")、Bytes.toBytes( "20161130abc"));
table.put(置きます)。
table.close();
hbaseConn.close();
}

}

 

 

 

 

MyBulkload.java

 

 

パッケージcn.ls.insert。

輸入org.apache.hadoop.conf.Configuration。
輸入org.apache.hadoop.fs.Path。
輸入org.apache.hadoop.hbase.HBaseConfiguration。
輸入org.apache.hadoop.hbase.KeyValue。
輸入org.apache.hadoop.hbase.client.HTable;
輸入org.apache.hadoop.hbase.io.ImmutableBytesWritable;
輸入org.apache.hadoop.hbase.mapreduce.HFileOutputFormat。
輸入org.apache.hadoop.hbase.util.Bytes。
輸入org.apache.hadoop.io.LongWritable;
輸入org.apache.hadoop.io.Text;
輸入org.apache.hadoop.mapreduce.Job。
輸入org.apache.hadoop.mapreduce.Mapper;
輸入org.apache.hadoop.mapreduce.lib.input.FileInputFormat。
輸入org.apache.hadoop.mapreduce.lib.input.TextInputFormat。
輸入org.apache.hadoop.mapreduce.lib.output.FileOutputFormat。

インポートにjava.io.IOException;

パブリッククラスMyBulkload {

パブリック静的クラスMyBulkMapperが延びるマッパーは<LongWritable、テキスト、ImmutableBytesWritable、です。KeyValue> {
@Overrideは
ボイドセットアップ(Mapper.Contextコンテキスト)はIOExceptionが、スロー保護
InterruptedExceptionある{
super.setup(コンテキスト)。
}

@Override
保護ボイドマップ(LongWritableキー、テキスト値、コンテキストコンテキストは)
にIOException、InterruptedExceptionあるが{スロー
// \ Tスライス組織内のデータは、このような複雑なJSON / XMLテキスト行として、カスタマイズするために解決することができる
文字列の行= )(value.toString;
文字列[] = line.split規約( "\ T");
IF(terms.length == 4){
バイト[] =のrowKey規約[0] .getBytesを();
ImmutableBytesWritable imrowkey =新しい新しいImmutableBytesWritable (のrowKey);
//コンテキストで書き込み、のrowKey =>キー値、列ファミリ:列名情報:名前、情報:年齢、情報:電話
context.write(imrowkey、keyValueの新新(のrowKey、Bytes.toBytes( "情報" )、Bytes.toBytes( "名前")、Bytes.toBytes(利用規約)))[1];
context.write(imrowkey、です。KeyValue新新(のrowKey、Bytes.toBytes( "情報")、Bytes.toBytes( "年齢" )、Bytes.toBytes(用語[2] )))。
context.write(imrowkey、新しいです。KeyValue(のrowKey、Bytes.toBytes( "情報")、Bytes.toBytes( "電話")、Bytes.toBytes(用語[3])));
}
}
}

公共の静的な無効メイン(文字列[]引数)が例外をスロー{

IF(!args.length = 3){
System.err.println( "使用:MyBulkload <テーブル名> <data_input_path> <hfile_output_path>");
System.exitと(2)。
}
文字列tableNameの=引数[0]。
ストリングinputPath =引数[1]。
ストリングoutputPath =引数[2]。

//例えばhtableを作成し、キーレンジパーティショニングを含むメタ情報領域取得するためのインポートテーブル
設定HBaseConfiguration.createをCONF =();
htable新しい新しいhtable =表(CONF、tableNameの)。

ジョブジョブ= Job.getInstance(CONF、 "MyBulkload");

job.setMapperClass(MyBulkMapper.class)。

job.setJarByClass(MyBulkload.class)。
job.setInputFormatClass(TextInputFormat.class)。

//最も重要な構成コード、分析に焦点を当てる必要があります
HFileOutputFormat.configureIncrementalLoad(ジョブ、表)。

FileInputFormat.addInputPath(仕事、新しいパス(inputPath));
FileOutputFormat.setOutputPath(仕事、新しいパス(outputPath));

System.exit(job.waitForCompletion(真)0:1)。

}

}

 

おすすめ

転載: www.cnblogs.com/95lyb/p/11670570.html