"Path is not legal" 将数据从 S3 加载到位于 EMR 中 S3 的外部 Hive table 时出错
"Path is not legal" error when loading data from S3 into external Hive table located in S3 in EMR
我有一个 运行 Hive 所在的 EMR 集群。我在 S3 上有一个外部 table 定义如下:
+-----------------------------------------------------------------+
| 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') |
+-----------------------------------------------------------------+
这个 table 有一些数据,我可以通过直线中的 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)
请注意,我尝试加载的文件和 table 我尝试加载的文件存在于不同的存储桶中。
我认为这个问题归结为将 S3 设置为 Hive 的基本文件系统,但我尝试将 default.fs.name
和 hive.metastore.warehouse.dir
编辑为包含 table.这样做会产生完全相同的错误。
如有任何帮助,我们将不胜感激!
你可以尝试将位置设置为 s3n://
不要使用 LOAD,只需为每个 S3 位置定义一个外部 table,然后使用 INSERT INTO ... SELECT ... 样式查询。
我有一个 运行 Hive 所在的 EMR 集群。我在 S3 上有一个外部 table 定义如下:
+-----------------------------------------------------------------+
| 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') |
+-----------------------------------------------------------------+
这个 table 有一些数据,我可以通过直线中的 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)
请注意,我尝试加载的文件和 table 我尝试加载的文件存在于不同的存储桶中。
我认为这个问题归结为将 S3 设置为 Hive 的基本文件系统,但我尝试将 default.fs.name
和 hive.metastore.warehouse.dir
编辑为包含 table.这样做会产生完全相同的错误。
如有任何帮助,我们将不胜感激!
你可以尝试将位置设置为 s3n://
不要使用 LOAD,只需为每个 S3 位置定义一个外部 table,然后使用 INSERT INTO ... SELECT ... 样式查询。