繁体   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