我正在使用Spark2.0。需求是从选择值到dataframe中创建一个新的表。同时将df写成
df.write.saveasTable(hive_table_name,format='parquet',mode='overwrite')
错误是:客户端无法通过:TOKEN,KERBEROS主机详细信息进行身份验证:本地主机是:“一些-ip”,目标主机是:“一些-其他-ip”。
另外,如果该表不存在于单元中,spark.write.saveasTable会在单元中创建一个新表并自动推断模式吗?
发布于 2017-05-02 09:34:27
好吧,在过去几周里学到了一些东西,
saveasTable将表保存到hdfs文件系统。如果没有一个在Hive上显式创建的模式来使用parquet文件,那么在创建dataframe时,spark的模式推断就不会被Hive使用来反映hive上一个表的现有列。
模式推断仅适用于JSON、CSV,而不适用于.dat文件或压缩文本文件。这些文件必须用分隔符来处理,而dataframe必须用第一行重命名为列标题,然后保存到磁盘中。
发布于 2017-04-20 20:06:48
我不确定您收到的错误,但是是的,如果您试图创建一个不存在的表,Spark将自动推断模式。
希望这能帮上忙!
子散列
https://stackoverflow.com/questions/43530489
复制相似问题