####遇到一个问题。
spark sql dataset 写入表的时候,我写的是一个用ymd分区的表,我想设置输出格式format(“hive”),然后报错了
代码如下
ds.write().partitionBy(partitionsStr)
.option("path", hdfspath)
.mode(SaveMode.Append).format("hive")
.saveAsTable( newtable);*/
查询了一些资料,得到的结论是
- ds这块partitionBy是得到的dataframe的分区,而不是hive的分区
###所以,想到的解决方案是
先建表,再去写数据
###这种方案又遇到一个问题
我想通过 create external table newtable like oldtable location "hdfs://xxxx"的方式去建立
但是spark sql并不支持external这个关键字
###后面处理的方式是
- 通过jdbc连接hive的方式去执行create external table newtable like oldtable location "hdfs://xxxx"
- ds.write().option("path", hdfspath)
.mode(SaveMode.Append)
.insertInto( newtable);
在尝试使用SparkSQL Dataset写入到Hive分区表时,遇到了格式设置错误。发现partitionBy方法不适用于Hive分区。通过先创建外部表再写入数据的方案解决,但遇到了sparksql不支持external关键字的问题。最终采用通过JDBC连接Hive执行SQL创建外部表,再使用Dataset的insertInto方法成功写入。
506

被折叠的 条评论
为什么被折叠?



