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)。
}
}