我尝试在amazon emr上使用带有hive引擎的presto(如etl)将数据从s3 bucket导出到其他s3 bucket,但在导出数据时发生filealreadyexistsexception。如何使用presto导出数据?
环境
电子病历-4.3.0
Hive1.0.0
普雷斯托沙箱0.130
错误
我尝试了以下操作:
$ hive
hive> CREATE EXTERNAL TABLE logs(log string)
-> LOCATION 's3://foo-bucket/logs/';
hive> CREATE EXTERNAL TABLE s3_export(log string)
-> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
-> LOCATION 's3://foo-bucket/export/';
hive> exit;
$ presto-cli --catalog hive --schema default
presto:default> INSERT INTO s3_export SELECT log FROM logs;
Query 20160203_125741_00018_ba5sw, FAILED, 3 nodes
Splits: 7 total, 1 done (14.29%)
0:01 [39 rows, 4KB] [49 rows/s, 5.13KB/s]
Query 20160203_125741_00018_ba5sw failed: java.nio.file.FileAlreadyExistsException: /tmp
2条答案
按热度按时间5m1hhzi41#
这是由于presto hive连接器不喜欢符号链接造成的
/tmp/
emr(4.2和4.3)用于hive.s3.staging-directory
,可以使用配置api覆盖hive.s3.staging-directory
设置为/mnt/tmp/
,如下所示:ltqd579y2#
我已通过以下命令解决了问题: