我试图将spark dataframe
写入hbase
并关注了其他几个博客,其中一个就是这个,但它不起作用。
但是,我可以成功地从HBASE
读取数据为dataframe
。此外,一些帖子使用了org.apache.hadoop.hbase.spark
格式,其他帖子使用了org.apache.spark.sql.execution.datasources.hbase
格式。我不确定该用哪一个。Spark-2.2.2
;HBASE-1.4.7
;Scala-2.11.12
和HortonWorks SHC 1.1.0-2.1-S2.11
从这里开始。
守则如下:
case class UserMessageRecord(
rowkey: String,
Name: String,
Number: String,
message: String,
lastTS: String
)//this has been defined outside of the object scope
val exmple = List(UserMessageRecord("86325980047644033486","enrique","123455678",msgTemplate,timeStamp))
import spark.sqlContext.implicits._
val userDF = exmple.toDF()
//write to HBase
userDF.write
.options(Map(HBaseTableCatalog.tableCatalog -> catalog))
.format("org.apache.spark.sql.execution.datasources.hbase").save() //exception here
//read from HBase and it's working fine
def withCatalog(cat: String): DataFrame = {
spark.sqlContext
.read
.options(Map(HBaseTableCatalog.tableCatalog->cat))
.format("org.apache.spark.sql.execution.datasources.hbase")
.load()
}
val df = withCatalog(catalog)
df.show()
这里有个例外:
在org.apache.hadoop.hbase.security.userprovider.instantiate(userprovider.java:122)在org.apache.hadoop.hbase.client.connectionfactory.createConnection(connectionfactory.java:214)在org.apache.hadoop.hbase.client.crenectionfactory.createConnection(connectionfactory.java:119)在.io.sparkhadoopmapreduceWriter$.write(sparkhadoopmapreduceWriter.scala:76)在org.apache.spark.rdd.pairrddfunctions$$anonfunt$saveasnewapihadoopdataSet$1.在org.apache.spark.rdd.pairrddfunctions.scale.apirrddfunctions.scale.apirrddfunctions.scala:1085)在S.Scala:1085)在org.apache.spark.rdd.rddOperationScope$.WithScope(rddOperationScope.scala:151)在org.apache.spark.rdd.rddOperatIonScope$.WithScope(rddoperationScope.scala:112)在org.apache.spark.rdd.rdd.rdd.wairrddfunctions.saveasnewapihadoopDataSet(Pairrddfunctions.scala:1084)在org.apache.spark.sql.execution.datasources.hbase.hbaserelation.inser(hbaserelation.scala:218)在sql.execution.datasources.datasource.writ(datasource.scala:469)在org.apache.spark.sql.execution.sql.execution.command.run(saveintodatasourceCommand.scala:48)在(commands.scala:74)在org.apache.spark.sql.execution.sparkplan$$anonfun$execute$1.apply(sparkplan.scala:117)在org.apache。spark.sql.execution.sparkplan$$anonfun$execute$1.Applic(sparkplan.scala:117)在org.apache.spark.sql.execution.sparkplan$$anonfun$executeQuery$1.Applic(sparkplan.scala:138)在org.apache.spark.rdd.rdperationScope$.withscope(rddoperationscala:151)在org.apache.spark.sql.execution.sparkplan.execution.query,在execution.tordd$lzycompute(queryexecution.scala:92)在org.apache.spark.sql.execution.queryexecution.tordd(queryexecution.scala:92)在org.apache.spark.sql.dataframewriter.runcommand(dataframewriter.scala:609)在org.apache.spark.sql.dataframewriter.scala:233)在scala)
正如在这里所讨论的,我对SparkSession builder进行了额外的配置更改,异常消失了。然而,我不清楚原因和解决办法。
val spark: SparkSession = SparkSession.builder()
.master("local[1]")
.appName("HbaseSparkWrite")
.config("spark.hadoop.validateOutputSpecs", false)
.getOrCreate()
问题内容: 我有一个问题-如何将结果/数据库选择写入JTextArea。我的JButton的方法是: 如果使用 -在控制台中看到输出,但是如何将Text设置为JTextArea? 问题答案: 请参阅文档。
问题内容: 有 DataFrame.to_sql 方法,但仅适用于mysql,sqlite和oracle数据库。我无法传递给此方法postgres连接或sqlalchemy引擎。 问题答案: 从pandas 0.14(2014年5月发行)开始,支持postgresql。该模块现在用于支持不同的数据库风格。您可以为PostgreSQL数据库传递sqlalchemy引擎(请参阅docs)。例如: 您是
问题内容: 我有一个java.sql.Blob的JPA实体: 如何创建该实体的实例?我想设置与方法,但如何让从JPA?只是接口,对于不同的数据库有不同的实现,因此我认为JPA应该给我正确的实现。如何获得? 问题答案: 使用字节数组: 如果要使用流,请使用以下命令创建Blob:
问题内容: 我正在尝试使用Go写入日志文件。 我尝试了几种方法,但都失败了。这是我尝试过的: 日志文件被创建,但是没有任何打印或附加到该文件。为什么? 问题答案: 过去的工作方式一定不同,但这对我有用: 基于Go文档,不能用于,因为它会打开文件“供阅读:” 打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取;关联的文件描述符具有mode 。如果有错误,它将是类型。 编辑 检查后移至
问题内容: 我试图将XML 存储到XML文件中,以便稍后可以检索信息,然后将其显示回控制台。 有人可以告诉我最有效的方法吗? 编辑: 这是我要写入外部文件的内容 这一切都创建了一个Bank用户,该用户被扔到中,然后我想存储他们的信息,以便稍后返回并重新显示。 问题答案: //根据需要修改下面的类 //下面的类实际写了
我正在努力将Java代码转换为javascript。为此,例如,我正在将public静态int primesolution转换为函数primesolution。我不太知道我是否在转换它的正确轨道上。我被困在公共静态空main(String[]args)中。如何将此函数转换为Javascript。非常感谢任何帮助。 我用JavaScript转换的代码