我创建了一个Cloudera集群,并从oracle DB导入了一些示例测试文件。但过了一段时间我不得不改变节点的主机名。我按照cloudera网站上提到的指南,一切正常。但是当我尝试访问我之前创建的表(使用hive和impala)时,我收到以下错误: 获取结果会遇到以下错误:
java.io.IOException:java.lang.IllegalArgumentException:java.net.UnknownHostException:[Old Host Name]
然后我在同一个DB(使用Hue> Metastore Tables)下创建了另一个表,我可以访问在新主机名下创建的这些新表,没有任何问题。
有人可以解释我如何在不恢复我的主机名的情况下访问我的旧表。我是否可以访问Metastore db并将表指针更改为新的主机名。
答案 0 :(得分:2)
没关系我找到了答案。
您可以通过执行
确认hive / impala正在寻找错误的位置describe formatted [tablename];
O / P
14 Location: hdfs://[oldhostname]:8020/user/hive/warehouse/sample_07 NULL
然后你可以改变"位置"财产使用:
ALTER TABLE sample_07 SET LOCATION "hdfs://[newhostname]:8020/user/hive/warehouse/sample_07";
ps - sample_07是关注的表格
上面的解决方法适用于默认情况下可用的示例表,但我有另一个表格,我从外部数据库扩展到客户的Metastore数据库,这再次给了我一个类似于上面的错误。
解决方案:
转到已安装配置单元的主机。 暂时将蜂巢服务器的旧主机名添加到/ etc / hosts(如果您没有外部DNS,则新旧主机名应存在于同一主机文件中)
执行' ALTER TABLE ....'在hive shell(或web界面)
从/ etc / hosts
中删除oldhostname条目答案 1 :(得分:1)
试试这个
hive --service metatool -updateLocation <newfsDefaultFSValue> <old_fsDefaultFSValue>