无法从配置单元更改表位置

wrrgggsh  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(534)

我正在启用 Alluxio 处于中间层 Ceph 以及 Hive ,根据使用alluxio运行apachehive的教程,我尝试从alluxio为存储在hdfs中的现有表提供服务,因为我正在使用 external table 立即访问数据。
这里的关键步骤是将表位置从分布式存储系统(如hdfs和ceph)修改为alluxio:
4.2. 将外部表从hdfs移动到alluxio假设配置单元中存在一个位置设置为的现有外部表u\u用户hdfs://namenode_hostname:端口/ml-100k。可以使用以下hiveql语句检查其“location”属性:
配置单元>描述格式化的用户;
然后使用以下hiveql语句将表数据位置从hdfs更改为alluxio:
配置单元>更改表用户设置位置“alluxio://master_hostname:端口/ml-100k“;
我用的说法是:

alter table call_center set location "alluxio://alluxio_master:19998/tpcds_text_1000.db/call_center";

但是,我得到如下错误:

ERROR ql.Driver: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. null

通过在警告日志级别打开配置单元,我们获得了更多异常详细信息:

WARN [ main] metastore.RetryingMetaStoreClient: MetaStoreClient lost connection. Attempting to reconnect (1 of 1) after 1s. alter_table_with_environmentContext
org.apache.thrift.transport.TTransportException: null
        at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) ~[hive-exec-3.1.1.jar:3.1.1]
        at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) ~[hive-exec-3.1.1.jar:3.1.1]
        at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) ~[hive-exec-3.1.1.jar:3.1.1]

当前 call_center 表格信息如下:


# Detailed Table Information

Database:               tpcds_text_1000
OwnerType:              USER
Owner:                  root
Retention:              0
Location:               s3a://tpcds/user/root/tpcds/1000/call_center
Table Type:             EXTERNAL_TABLE

欢迎评论,谢谢。

nfs0ujit

nfs0ujit1#

在使用alluxio运行apache配置单元时所做的一些修改可能只有在metastore重新启动后才会生效。
我杀死了metastore然后重启了它 hive --service metastore ,表位置修改成功。
把这条线索留给可能遇到同样情况的人。

相关问题