首页 > 解决方案 > 将数据从 Spark 数据帧转储到 HBase 表

问题描述

我想使用 Spark scala 代码将数据从数据帧转储到 HBase 表中。我尝试使用 HBaseTableCatalog。

添加了以下依赖项:

shc-core-1.1.0.3.1.5.6-1.jar

hbase 库(hbase-client.jar、hbase-common.jar、hbase-protocol.jar、hbase-server.jar、hbase-spark.jar、hbase-shaeded*.jar、htrace-core、hbase-mapreduce.jar、 hadoop-mapreduce-client-core-{version}.jar)

下面是代码:

case class HBaseRecord(col0: String, col1: String, col2: String)
val catalog = s"""{
"table":{"namespace":"default", "name":"shcExampleTable", "tableCoder":"PrimitiveType"},
"rowkey":"key",
"columns":{
"col0":{"cf":"rowkey", "col":"key", "type":"string"},
"col1":{"cf":"cf1", "col":"col1", "type":"string"},
"col2":{"cf":"cf2", "col":"col2", "type":"string"}
}
}""".stripMargin
val AFINN = sc.textFile("hdfs://sandbox-hdp.hortonworks.com:8020/Input/AFINN1.txt").map(x=> x.split("\t")).map(x => HBaseRecord(x(0).toString,x(1).toString,x(2).toString))
val AFINNDF = AFINN.toDF("col0","col1","col2")
AFINNDF.createOrReplaceTempView("rating")
val DF = AFINNDF.select($"col0",$"col1",$"col2")
DF.write.options(Map(HBaseTableCatalog.tableCatalog -> catalog, HBaseTableCatalog.newTable -> "4")).format("org.apache.spark.sql.execution.datasources.hbase").save()

它抛出以下错误:


java.lang.NoClassDefFoundError: org.apache.spark.sql.execution.datasources.hbase.HBaseRelation.insert(HBaseRelation.scala:230)
at org.apache.spark.sql的org/apache/hadoop/hbase/mapreduce/TableOutputFormat .execution.datasources.hbase.DefaultSource.createRelation(HBaseRelation.scala:65)

我已经添加了 hadoop-mapreduce*.jar 仍然抛出错误。TableOutputFormat 需要哪个库?

谢谢,

标签: scalaapache-sparkhbase

解决方案


推荐阅读