Presto CLI 调用 system.create_empty_partition() 错误
Presto CLI call system.create_empty_partition() ERROR
环境
- 急速 0.215
- presto-cli 0.215
- presto-jdbc 0.215
由 Presto
创建的 Hive Table
CREATE TABLE hive.origin.test_part (
id int,
date_key int
)
WITH (
format = 'ORC',
partitioned_by = ARRAY['date_key'],
external_location = '/user/hive/warehouse/origin.db/test_part/'
)
Presto JDBC和CLI都插入成功
分区'20190122'之前不存在并且插入成功这意味着重命名tmp目录到/user/hive/warehouse/origin.db/test_part/date_key=20190122
成功。
/user/hive/warehouse/origin.db/test_part/date_key=20190122/
在 hdfs
但是 Presto CLI CALL system.create_empty_partition() 失败
CALL system.create_empty_partition( schema_name => 'origin', table_name => 'test_part', partition_columns => ARRAY['date_key'], partition_values => ARRAY['20190121'])
完整的错误信息
com.facebook.presto.spi.PrestoException: Failed to rename hdfs://datacenter1:8020/tmp/presto-hive/b87162e5-9e48-4d43-a0e7-ecf0994fe625/date_key=20190121 to hdfs://datacenter1:8020/user/hive/warehouse/origin.db/test_part/date_key=20190121: rename returned false
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.renameDirectory(SemiTransactionalHiveMetastore.java:1787)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.access00(SemiTransactionalHiveMetastore.java:87)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore$Committer.prepareAddPartition(SemiTransactionalHiveMetastore.java:1177)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore$Committer.access0(SemiTransactionalHiveMetastore.java:957)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.commitShared(SemiTransactionalHiveMetastore.java:885)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.commit(SemiTransactionalHiveMetastore.java:807)
at com.facebook.presto.hive.HiveMetadata.commit(HiveMetadata.java:1949)
at com.facebook.presto.hive.CreateEmptyPartitionProcedure.createEmptyPartition(CreateEmptyPartitionProcedure.java:126)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:649)
at com.facebook.presto.execution.CallTask.execute(CallTask.java:160)
at com.facebook.presto.execution.CallTask.execute(CallTask.java:60)
at com.facebook.presto.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:168)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
/tmp/presto-hive/
在 hdfs
所以
CALL system.create_empty_partition() 使用不同的 'user' 来操作 hdfs?
这是由于 bug 阻止它使用非分桶表而失败的。它已在 301
版本中修复。
环境
- 急速 0.215
- presto-cli 0.215
- presto-jdbc 0.215
由 Presto
创建的 Hive TableCREATE TABLE hive.origin.test_part (
id int,
date_key int
)
WITH (
format = 'ORC',
partitioned_by = ARRAY['date_key'],
external_location = '/user/hive/warehouse/origin.db/test_part/'
)
Presto JDBC和CLI都插入成功
分区'20190122'之前不存在并且插入成功这意味着重命名tmp目录到/user/hive/warehouse/origin.db/test_part/date_key=20190122
成功。
/user/hive/warehouse/origin.db/test_part/date_key=20190122/
在 hdfs
但是 Presto CLI CALL system.create_empty_partition() 失败
CALL system.create_empty_partition( schema_name => 'origin', table_name => 'test_part', partition_columns => ARRAY['date_key'], partition_values => ARRAY['20190121'])
完整的错误信息
com.facebook.presto.spi.PrestoException: Failed to rename hdfs://datacenter1:8020/tmp/presto-hive/b87162e5-9e48-4d43-a0e7-ecf0994fe625/date_key=20190121 to hdfs://datacenter1:8020/user/hive/warehouse/origin.db/test_part/date_key=20190121: rename returned false
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.renameDirectory(SemiTransactionalHiveMetastore.java:1787)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.access00(SemiTransactionalHiveMetastore.java:87)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore$Committer.prepareAddPartition(SemiTransactionalHiveMetastore.java:1177)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore$Committer.access0(SemiTransactionalHiveMetastore.java:957)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.commitShared(SemiTransactionalHiveMetastore.java:885)
at com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore.commit(SemiTransactionalHiveMetastore.java:807)
at com.facebook.presto.hive.HiveMetadata.commit(HiveMetadata.java:1949)
at com.facebook.presto.hive.CreateEmptyPartitionProcedure.createEmptyPartition(CreateEmptyPartitionProcedure.java:126)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:649)
at com.facebook.presto.execution.CallTask.execute(CallTask.java:160)
at com.facebook.presto.execution.CallTask.execute(CallTask.java:60)
at com.facebook.presto.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:168)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
/tmp/presto-hive/
在 hdfs
所以
CALL system.create_empty_partition() 使用不同的 'user' 来操作 hdfs?
这是由于 bug 阻止它使用非分桶表而失败的。它已在 301
版本中修复。