场景:数据较少,用put写入
1.创建Hbase表
create_namespace 'default'
create 'default:t_test1', 'DATA'
2.测试数据文件 test1.txt
1595638951700,1,1.1939971,1.4677016,1.4034922
1595638951721,1,1.3716854,1.566847,1.4458307
1595638951723,2,1.3352232,1.4566108,1.5208404
1595638951715,1,1.8877013,1.1247256,1.6103745
1595638951696,2,1.2885377,1.7600425,1.4150856
1595638951707,1,1.8486422,1.1446141,1.5813918
1595638951694,3,1.2366319,1.4496765,1.7620823
1595638951740,1,1.9078307,1.7746134,1.337183
1595638951714,3,1.261858,1.2809255,1.4845717
1595638951697,2,1.5660034,1.0154893,1.6899275
3. Spark2.4.6用 put写入Hbase1.3.1
package mySpark;
import org.apache.spark.sql.SparkSession;
import myHDFS.MyHDFS;
import myHbase.MyHbase;
import security.MyLoginCommon;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.BufferedMutator;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2;
import org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles;
import org.apache.hadoop.hbase.spark.JavaHBaseContext;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.PairFlatMapFunction;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;
public class MySpark3 implements Serializable{
public static void main(String[] args) throws Exception {
}
public void writeHbaseWithSpark(String tableName) throws Exception
{
SparkSession spark = SparkSession.builder()
.appName("mytest1")
.master("local")
.getOrCreate();
JavaSparkContext javaSparkContext = new JavaSparkContext(spark.sparkContext());
Configuration hbaseConf=MyLoginCommon.loginHbase();
JavaHBaseContext hbaseContext = new JavaHBaseContext(javaSparkContext, hbaseConf);
String msg="1595389254875,2,1.9273945,1.0597579,1.1112773";
List<String> list = new ArrayList<>();
list.add(msg);
JavaRDD<String> rdd = javaSparkContext.parallelize(list);
hbaseContext.foreachPartition(rdd,new VoidFunction<Tuple2<Iterator<String>, Connection>>()
{
public void call(Tuple2<Iterator<String>, Connection> t) throws Exception
{
Table table = t._2().getTable(TableName.valueOf(tableName));
BufferedMutator mutator = t._2().getBufferedMutator(TableName.valueOf(tableName));
while (t._1().hasNext()) {
String a = t._1().next();
String[] b=a.split(",");
// Result r = table.get(new Get(Bytes.toBytes(b[0])));//查詢
Put put=new Put(Bytes.toBytes(b[0]));
put.addColumn(Bytes.toBytes("DATA"), Bytes.toBytes("i1"),Bytes.toBytes(b[3]));
mutator.mutate(put);
}
mutator.flush();
mutator.close();
table.close();
}
});
spark.close();
}
spark.close();
}
}