将hdfs数据写入到phoenix

1、spark方式:官网写入数据有不行,报org.apache.phoenix.mapreduce.PhoenixOutputFormat这个类找不到,但是我这累的jar我确定我已经导入了。
2、CsvBulkLoadTool导入数据,可不可以自定义分割符
3、使用jdbc写入数据,但是大量数据不行
已邀请:

jinqian

赞同来自: hbasegroup

CsvBulkLoadTool可以自定义分隔符的

yangjifei - 士为知己者死

赞同来自: Tiakon

可以将csv文件上传至hdfs,然后使用spark读取csv,创建rdd,再使用phoenix的spark驱动,批量保存数据到hbase中。
举例
第一种方式:saveRDDs
import org.apache.spark.SparkContext
import org.apache.phoenix.spark._

val sc = new SparkContext("local", "phoenix-test")
val dataSet = List((1L, "1", 1), (2L, "2", 2), (3L, "3", 3))

sc
.parallelize(dataSet)
.saveToPhoenix(
"OUTPUT_TEST_TABLE",
Seq("ID","COL1","COL2"),
zkUrl = Some("phoenix-server:2181")
)

第二种方式:save Dataframes
import org.apache.spark.SparkContext
import org.apache.spark.sql._
import org.apache.phoenix.spark._

// Load INPUT_TABLE
val sc = new SparkContext("local", "phoenix-test")
val sqlContext = new SQLContext(sc)
val df = sqlContext.load("org.apache.phoenix.spark", Map("table" -> "INPUT_TABLE",
"zkUrl" -> hbaseConnectionString))

// Save to OUTPUT_TABLE
df.save("org.apache.phoenix.spark", SaveMode.Overwrite, Map("table" -> "OUTPUT_TABLE",
"zkUrl" -> hbaseConnectionString))

参考phoenix官方:https://phoenix.apache.org/phoenix_spark.html
 

statfs

赞同来自:

直接写入HBase也是一个方案 多线程BufferedMutator

要回复问题请先登录注册


中国HBase技术社区微信公众号:
hbasegroup

欢迎加入HBase生态+Spark社区钉钉大群