1、spark方式:官网写入数据有不行,报org.apache.phoenix.mapreduce.PhoenixOutputFormat这个类找不到,但是我这累的jar我确定我已经导入了。
2、CsvBulkLoadTool导入数据,可不可以自定义分割符
3、使用jdbc写入数据,但是大量数据不行
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
可以将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