一、使用DataFrame.saveAsHadoopDataset(conn)方法。
特点:适合做批量的写入。优点为批量写入方便快捷。缺点对于数据量大的DF写入速度太慢。
val conn = new JobConf(HBaseConfigurationcreate())//设置HBase连接
conn.set(,)
conn.set(,)//设置Host和Port
conn.set(TableOutputFormat.OUTPUT_TABLE,“targetTableName”)//设置要插入到的HBase表名
conn.setOutputFormat()
df.rdd.map(x=>{
val put = new Put(Bytes.toBytes(x.getString(0))) //参数为rowkey
put.addColumn(Bytes.toBytes("columnFamilyname"),Bytes.toBytes("columnName1"),Bytes.toBytes("columnValue1")
put.addColumn(Bytes.toBytes("columnFamilyname"),Bytes.toBytes("columnName2"),Bytes.toBytes("columnValue2")
put.addColumn(Bytes.toBytes("columnFamilyname"),Bytes.toBytes("columnName3"),Bytes.toBytes("columnValue3")
(new ImmutableBytesWritable, put) //返回元组
}).saveAsHadoopDataset(conn) //存入HBase
二、使用HTable.put(Put)方法。
更可靠,使用数据量更小。
df.rdd.map(x => {
val put = new Put(Bytes.toBytes("rowkeyString"))
put.addColumn(Bytes.toBytes("columnFamilyNmae"),

本文介绍了三种将Spark DataFrame和RDD写入HBase的方法:1) 使用DataFrame的saveAsHadoopDataset,适合批量写入但速度较慢;2) 利用HTable的put方法,适用于数据量较小的情况;3) 执行BulkLoad操作,通过HFile批量加载大量数据,适用于大数据量写入。
最低0.47元/天 解锁文章
3782

被折叠的 条评论
为什么被折叠?



