kylin误删hdfs上kylin_metadata下数据出现java.lang.IllegalStateException错误

来源:互联网 发布:软件测试团队 编辑:程序博客网 时间:2024/05/17 02:44

一、问题描述

   在Kylin新建连接操作时选择的连接主键不唯一(两表连接时,连接主键ID在各个表中必须唯一),导致cub任务失败。此时导致网页端的Model界面一直处于加载状态,因此我把hdfs上/kylin/kylin_metadata/文件夹下当天建的项目全部删除了。以至于在新建cub时,不能新建和以前同样名字的cub(以前的cub名字为join,此时网页端已经没有了该cub,但是仍然不能建join的cub)。并且在调用./metastore.sh clean命令时出现如下错误:



二、原因分析

    因为此时删除了HDFS上/kylin/kylin_metadata/文件夹下的数据,而在Hbase的kylin_metadata元数据表中仍然存在该项目的数据即rowkey为“/cube/join.json”的数据,但是该项目的“index_path”却丢失了(kylin_metadata中数据的格式和内容保存在HDFS上/kylin/kylin_metadata/文件夹下)。因此在建cub时,不能建相同名字的cub;在调用./metastore.sh clean命令时因为不能找到/cube/join.json的“index_path”而报错。


三、解决办法

  删除Hbase中kylin_metadata元数据表对应的行。进入Hbase shell模式,调用get 'kylin_metadata', '/cube/join.json'命令可以查看到具体的内容;而后调用deleteall 'kylin_metadata','/cube/join.json'命令删除对应的行即可。

0 0