【发布时间】:2017-03-22 17:25:04
【问题描述】:
我有一个从配置单元表加载的 DataFrame。添加一些数据后,我想将其写回配置单元,但得到这个异常:
Exception in thread "main" java.lang.RuntimeException: [1.5] failure: ``.'' expected but `:' found
这是我的部分代码:
var _resultsDF: DataFrame = _hiveContext.read.format("orc").load (_masterHDFS + "/apps/hive/warehouse/mytable");
def getValueList(): List[Any] = {
List(
"entry field1"
"entry field2"
)
}
def addRow(): Unit = {
val rdd = _sparkContext.parallelize (Seq (getValueList()))
val rowRdd = rdd.map (value => Row ((value: _*)))
val rowDF = _sqlContext.createDataFrame (rowRdd, _resultsDF.schema)
// put DataFrame to results
_resultsDF = _resultsDF.unionAll (rowDF)
_resultsDF.write.format("orc").saveAsTable (_masterHDFS + "/apps/hive/warehouse/mytable")
// => Exception in thread "main" java.lang.RuntimeException: [1.5] failure: ``.'' expected but `:' found
}
【问题讨论】:
-
我不太清楚。但是请尝试更改您正在编写和阅读的表的名称。因为“mytable”命名的表已经存在,你之前读过的,你用相同的名字写过。
-
您是否尝试过使用
SaveMode.Append,删除联合并仅保存新的rowDF记录?rowDF.write.format("orc").mode(SaveMode.Append).saveAsTable(...)。您是否验证了两个模式(mytable 和“字符串”)是相同的?
标签: scala apache-spark hive