trinodb / trino

Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)
https://trino.io
Apache License 2.0
9.95k stars 2.87k forks source link

Trino cannot query hive connector (hadoop/hive 3): Unsupported privilege name: ALTER #4253

Open jiegzhan opened 4 years ago

jiegzhan commented 4 years ago

Tried to let presto-server-333 (334, 336) talk to hive connector (hadoop/hive 3), but all presto queries failed with this error: Query 20200625_232316_00000_ev9ef failed: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Unsupported privilege name: ALTER

This is the hadoop/hive version that I am using:

HADOOP_VERSION=3.2.1
HIVE_VERSION=3.1.2

Full stack trace:

com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Unsupported privilege name: ALTER
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3951)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.get(CachingHiveMetastore.java:244)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.listTablePrivileges(CachingHiveMetastore.java:860)
    at io.prestosql.plugin.hive.HiveMetastoreClosure.listTablePrivileges(HiveMetastoreClosure.java:270)
    at io.prestosql.plugin.hive.metastore.SemiTransactionalHiveMetastore.listTablePrivileges(SemiTransactionalHiveMetastore.java:891)
    at io.prestosql.plugin.hive.security.SqlStandardAccessControl.checkTablePermission(SqlStandardAccessControl.java:496)
    at io.prestosql.plugin.hive.security.SqlStandardAccessControl.checkCanSelectFromColumns(SqlStandardAccessControl.java:259)
    at io.prestosql.plugin.hive.security.SystemTableAwareAccessControl.checkCanSelectFromColumns(SystemTableAwareAccessControl.java:90)
    at io.prestosql.plugin.base.classloader.ClassLoaderSafeConnectorAccessControl.checkCanSelectFromColumns(ClassLoaderSafeConnectorAccessControl.java:204)
    at io.prestosql.security.AccessControlManager.lambda$checkCanSelectFromColumns$58(AccessControlManager.java:687)
    at io.prestosql.security.AccessControlManager.catalogAuthorizationCheck(AccessControlManager.java:915)
    at io.prestosql.security.AccessControlManager.checkCanSelectFromColumns(AccessControlManager.java:687)
    at io.prestosql.security.ForwardingAccessControl.checkCanSelectFromColumns(ForwardingAccessControl.java:279)
    at io.prestosql.sql.analyzer.Analyzer.lambda$analyze$0(Analyzer.java:88)
    at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
    at io.prestosql.sql.analyzer.Analyzer.lambda$analyze$1(Analyzer.java:87)
    at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
    at io.prestosql.sql.analyzer.Analyzer.analyze(Analyzer.java:86)
    at io.prestosql.sql.analyzer.Analyzer.analyze(Analyzer.java:75)
    at io.prestosql.execution.SqlQueryExecution.analyze(SqlQueryExecution.java:217)
    at io.prestosql.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:176)
    at io.prestosql.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:705)
    at io.prestosql.dispatcher.LocalDispatchQueryFactory.lambda$createDispatchQuery$0(LocalDispatchQueryFactory.java:121)
    at io.prestosql.$gen.Presto_334____20200626_024818_2.call(Unknown Source)
    at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
    at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
    at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Unsupported privilege name: ALTER
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3951)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.get(CachingHiveMetastore.java:244)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.listTablePrivileges(CachingHiveMetastore.java:860)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.loadTablePrivileges(CachingHiveMetastore.java:912)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.lambda$new$0(CachingHiveMetastore.java:212)
    at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
    at com.google.common.cache.CacheLoader$1.load(CacheLoader.java:188)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
    ... 33 more
Caused by: java.lang.IllegalArgumentException: Unsupported privilege name: ALTER
    at io.prestosql.plugin.hive.metastore.thrift.ThriftMetastoreUtil.parsePrivilege(ThriftMetastoreUtil.java:764)
    at io.prestosql.plugin.hive.metastore.thrift.ThriftHiveMetastore.lambda$listTablePrivileges$62(ThriftHiveMetastore.java:1478)
    at io.prestosql.plugin.hive.metastore.thrift.ThriftMetastoreApiStats.lambda$wrap$0(ThriftMetastoreApiStats.java:42)
    at io.prestosql.plugin.hive.util.RetryDriver.run(RetryDriver.java:130)
    at io.prestosql.plugin.hive.metastore.thrift.ThriftHiveMetastore.listTablePrivileges(ThriftHiveMetastore.java:1455)
    at io.prestosql.plugin.hive.metastore.thrift.BridgingHiveMetastore.listTablePrivileges(BridgingHiveMetastore.java:408)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.loadTablePrivileges(CachingHiveMetastore.java:912)
    at io.prestosql.plugin.hive.metastore.cache.CachingHiveMetastore.lambda$new$0(CachingHiveMetastore.java:212)
    at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
    at com.google.common.cache.CacheLoader$1.load(CacheLoader.java:188)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
    ... 47 more
subbareddydagumati commented 2 years ago

what's the root cause for this issue. I am seeing this error in Trino 363. Every day i am getting some unsupported privilege error READ, ALTER

com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Unsupported privilege name: READ
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3962)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3985)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4946)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4952)
    at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.get(CachingHiveMetastore.java:259)
    at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.listTablePrivileges(CachingHiveMetastore.java:908)
    at io.trino.plugin.hive.HiveMetastoreClosure.listTablePrivileges(HiveMetastoreClosure.java:290)
    at io.trino.plugin.hive.metastore.SemiTransactionalHiveMetastore.listTablePrivileges(SemiTransactionalHiveMetastore.java:1083)
    at io.trino.plugin.hive.HiveMetadata.finishInsert(HiveMetadata.java:1757)
    at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.finishInsert(ClassLoaderSafeConnectorMetadata.java:458)
    at io.trino.metadata.MetadataManager.finishInsert(MetadataManager.java:907)
    at io.trino.sql.planner.LocalExecutionPlanner.lambda$createTableFinisher$3(LocalExecutionPlanner.java:3517)
    at io.trino.operator.TableFinishOperator.getOutput(TableFinishOperator.java:297)
    at io.trino.operator.Driver.processInternal(Driver.java:387)
    at io.trino.operator.Driver.lambda$processFor$9(Driver.java:291)
    at io.trino.operator.Driver.tryWithLock(Driver.java:683)
    at io.trino.operator.Driver.processFor(Driver.java:284)
    at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:1075)
    at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:163)
    at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:484)
    at io.trino.$gen.Trino_356____20211025_135011_2.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Unsupported privilege name: READ
    at io.trino.plugin.hive.metastore.thrift.ThriftMetastoreUtil.parsePrivilege(ThriftMetastoreUtil.java:751)
    at io.trino.plugin.hive.metastore.thrift.ThriftHiveMetastore.lambda$listTablePrivileges$65(ThriftHiveMetastore.java:1557)
    at io.trino.plugin.hive.metastore.thrift.ThriftMetastoreApiStats.lambda$wrap$0(ThriftMetastoreApiStats.java:42)
    at io.trino.plugin.hive.util.RetryDriver.run(RetryDriver.java:130)
    at io.trino.plugin.hive.metastore.thrift.ThriftHiveMetastore.listTablePrivileges(ThriftHiveMetastore.java:1534)
    at io.trino.plugin.hive.metastore.thrift.BridgingHiveMetastore.listTablePrivileges(BridgingHiveMetastore.java:469)
    at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.loadTablePrivileges(CachingHiveMetastore.java:960)
    at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.lambda$new$0(CachingHiveMetastore.java:225)
    at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:168)
    at com.google.common.cache.CacheLoader$1.load(CacheLoader.java:192)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
    ... 24 more
zzzpoint commented 1 year ago

Is there a workaround for this issue?