由于ORC错误而引发对配置单元的写入:路径不是文件



我有一个spark代码,它正试图写入hive ORC表Spark版本:2.2.0.2.6

我创建了一个数据帧,当我执行DF.show(10)时,我可以看到数据和列也匹配。但当我尝试使用以下代码将其保存到蜂窝ORC表时。

DF.write.mode(SaveMode.Overwrite).format("orc").saveAsTable(hive_stgtableName)

DF.repartition(5).write.mode("Append").insertInto(hive_stgtableName_PReq)

我得到的错误如下。

Caused by: org.apache.hadoop.ipc.RemoteException: Path is not a file: /apps/dir1/dir2/dir3/dir4/mydb/hive_stgtableName

此hive_stgtableName指向

/apps/dir1/dir2/dir3/dir4/mydb/hive_stgtableName。

现在,每当我在重新创建配置单元表后运行此代码时,我都会得到随机目录,但同样的错误。

/apps/dir1/dir2/dir3/dir4/mydb/xx_1

/apps/dir1/dir2/dir3/dir4/mydb/xx_2

/apps/dir1/dir2/dir3/dir4/mydb/xx_3

我尝试了所有的桌面娱乐,但错误仍然存在。基本上,它对/apps/dir1/dir2/dir3/dir4/mydb/hive_stgtableName同一级别的所有目录都是随机抛出错误

我的配置单元表语句位于下方

CREATE EXTERNAL TABLE IF NOT EXISTS mydb.hive_stgtableName( headertimestamp string, recordtype string, messageid string, myattri_chn_updatesallowed string, myattri_chn_messageid string, myattri_chn_version string, myattri_chn_identity string, myattri_chn_system string, myattri_chn_xmlns_ns2 string, myattri_chn_xmlns_soap string, myattri_chn_xmlns_ns3 string, myattri_chn_xmlns_ns4 string, syscontext_servgrp string, syscontext_ntwk string, syscontext_ch string, syscontext_zone string, syscontext_session string, service_id string, myval_contmyval_id string, myval_contmyval_assetref_providerid string, myval_contmyval_assetref_assetid string, climyval_currentdatetime string, climyval_terminaladdr_type string, climyval_terminaladdr string, climyval_targetcode_key string, climyval_targetcode string, placemtopp_id string, placemtopp_serregref string, hashed_header_id string, input_file_name string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' LOCATION '/apps/dir1/dir1/dir1/dir1/mydb/hive_stgtableName' TBLPROPERTIES ('orc.compress'='SNAPPY');

知道是什么导致了这个错误吗。我尝试了很多谷歌搜索,但没有发现这个错误。

这里的问题是在读取文件(包含超过300个文件(时,在同一位置也有目录。Spark很奇怪,因为当我尝试执行DF.show(10(时,它仍然会向我显示正确的输出,但当我尝试将数据写入表时,它会抛出一个错误,每次它都会显示随机目录。因此,通过确保它只读取作为输入的文件,这个错误就消失了。

尝试

saveAsTable(mydb.hive_stgtableName)

最新更新