我正在启用 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
欢迎评论,谢谢。
1条答案
按热度按时间nfs0ujit1#
在使用alluxio运行apache配置单元时所做的一些修改可能只有在metastore重新启动后才会生效。
我杀死了metastore然后重启了它
hive --service metastore
,表位置修改成功。把这条线索留给可能遇到同样情况的人。