scala - 将数据从 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 需要哪个库?
谢谢,
解决方案
推荐阅读
- r - R:如何根据频率为我的网络创建权重?
- html - 上传时如何在 GitHub 自述文件中保留 HTML 格式?
- javascript - 如何将输入字段值存储在 jquery td 标记内的变量中?
- java - Spring Boot 应用程序中对 REST 端点的自定义访问控制
- flutter - 如何让黄色容器扩展并填充其紫色父母可用的其余空间
- c++ - 复制构造函数和重载的加法运算符
- angular - 如何在 Angular Material 中更改 mat-form-field 边框颜色
- java - 在 Java 中使用通用链表结构创建 LinkedStack 时遇到问题
- python - 在 numpy 数组上应用“同时”多个条件
- gtk - jhbuild build 得到了我的系统上未安装的错误介子版本