无法覆盖pyspark中的Parquet配置单元表

yh2wf1be  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(456)

使用:spark 1.5.2,hive1.2我有一个Parquet格式的外部Hive表。我创建了一个.py脚本,从我的\表中选择Dataframe,进行一些转换,然后尝试写回原始表。
我试过以下方法: df.write.insertInto('table_name', overwrite='true') .
这将引发以下错误:
pyspark.sql.utils.analysisexception:无法将覆盖插入到同时从中读取的表中。 df.write.mode('overwrite').parquet('my_path') df.write.parquet('my_path', mode='overwrite') df.write.save('my_path', format='parquet', mode = 'overwrite') 这些似乎都抛出了这个错误:
error client fs/client/fileclient/cc/client.cc:1802 thread:620 open failed for file/my\u path/part-r-00084-9,lookupfid error no such file or directory(2)2016-04-26 16:47:170942 error jnicommon fs/client/fileclient/cc/jni\u maprclient.cc:2488 thread:620 getblockinfo failed,无法打开文件/my\u path/part-r-00084-9 16/04/26 16:47:17警告调度程序:由于异常,创建新阶段失败-作业:16

**注意,如果文件格式是orc,那么上面的方法1可以正常工作,但是对于parquet会抛出这个错误。

如有任何建议,将不胜感激!

ejk8hzay

ejk8hzay1#

从目前为止我所发现的一切来看,读取和写入Parquet格式文件的解决方案似乎是写入临时/暂存目录,删除原始目录,然后将临时目录重命名为原始目录。要在pyspark中执行此操作,需要以下命令:

import os
import shutil
shutil.rmtree('my_tmp_path')
os.rename('my_tmp_path', 'my_path)

相关问题