[英]“Path is not legal” error when loading data from S3 into external Hive table located in S3 in EMR
我有一個正在運行Hive的EMR集群。 我在S3上有一個外部表,其定義如下:
+-----------------------------------------------------------------+
| CREATE EXTERNAL TABLE `blah`( |
| `blah1` string, |
| `blah2` string) |
| PARTITIONED BY ( |
| `blah3` string, |
| `blah4` string, |
| ROW FORMAT DELIMITED |
| FIELDS TERMINATED BY '\t' |
| STORED AS INPUTFORMAT |
| 'org.apache.hadoop.mapred.TextInputFormat' |
| OUTPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' |
| LOCATION |
| 's3://REDACTED/events' |
| TBLPROPERTIES ( |
| 'transient_lastDdlTime'='REDACTED') |
+-----------------------------------------------------------------+
該表包含一些數據,我可以通過beeline中的SELECT
語句查看。 該數據來自使用s3distcp進行的傳輸。
我遇到的問題是,當我嘗試通過LOAD DATA INPATH
命令加載數據時出現以下錯誤:
Error: Error while compiling statement: FAILED: SemanticException [Error 10028]: Line 1:17 Path is not legal ''s3://REDACTED/FILE_I_WANT_TO_LOAD'': Move from: s3://REDACTED/FILE_I_WANT_TO_LOAD to: s3://REDACTED/PARTITION_IN_TABLE is not valid. Please check that values for params "default.fs.name" and "hive.metastore.warehouse.dir" do not conflict. (state=42000,code=10028)
請注意,我要加載的文件和我要加載的表存在於不同的存儲桶中。
我認為這個問題歸結為將S3設置為Hive的基本文件系統,但我嘗試將default.fs.name
和hive.metastore.warehouse.dir
都編輯為包含表的S3存儲桶。 這樣做會產生相同的確切錯誤。
任何幫助,將不勝感激!
不要使用LOAD,只需為每個S3位置定義一個外部表,然后使用INSERT INTO ... SELECT ...樣式查詢。
您可以嘗試將位置設為s3n://嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.