[英]“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.