在阿里云上,由于利用的是临时集群,用的rds的mysql来管理hive元数据,在跑任务时候遇到如下问题:
java.lang.IllegalArgumentException: java.net.UnknownHostException: emr-header-1.cluster-41729
注意这个 emr-header-1.cluster-41729 ,这是一个ip的域名,于是查看hosts文件
vi /etc/hosts
并没有发现 emr-header-1.cluster-41729
由于写代码 使用:
CREATE TABLE dmp.t_d11
STORED AS ORC
SELECT ***
这样的sql写的, dmp默认是个内部表
使用如下命令查看dmp库
desc database dmp;
Database Name dmp
Description
Location hdfs://emr-header-1.cluster-41729:9000/user/hive/warehouse/dmp.db
Time taken: 2.012 seconds, Fetched 3 row(s)
20/01/06 19:13:25 INFO [main] SparkSQLCLIDriver: Time taken: 2.012 seconds, Fetched 3 row(s)
问题基本找到,hive元数据中,dmp中内部表默认保存路径为:
hdfs://emr-header-1.cluster-41729:9000/user/hive/warehouse/dmp.db
于是登录 rds的mysql库,修改源数据库hive库中的dbs表
修改sql如下:
update hive.dbs set DB_LOCATION_URI = 'oss://ddf/hivedfd/dmp/dmp.db' where name='dmp';
修改完以后,问题解决
来源:CSDN
作者:功夫老五
链接:https://blog.csdn.net/weixin_39031707/article/details/103863444