簡體   English   中英

將數據從S3加載到EMR中位於S3中的外部Hive表中時出現“路徑不合法”錯誤

[英]“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.namehive.metastore.warehouse.dir都編輯為包含表的S3存儲桶。 這樣做會產生相同的確切錯誤。

任何幫助,將不勝感激!

不要使用LOAD,只需為每個S3位置定義一個外部表,然后使用INSERT INTO ... SELECT ...樣式查詢。

您可以嘗試將位置設為s3n://嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM