关于:linux重启后,hadoop中的表文件存在,但是hive中的表和库却不存在了的解决办法

      最近想练练hive,就整了个linux的虚拟机,然后配置了单机的hadoop,下载了hive,在里面建了一个test库,库里建了几张表。
      虚拟机因为点问题,强制重启了一下。重启以后,进入hive,

show databases;

      我建的库呢????我建的表呢???
      (;°○° )
      (゚Д゚≡゚д゚)!?
       (╯`□′)╯( ┴—┴
       ┻━┻︵╰(‵□′)╯︵┻━┻
      °(°ˊДˋ°) °
      …
      …
      …
      算了,往回找吧。。。第一反应是想,难道hadoop里的数据丢了?赶紧去hadoop看看。

hadoop dfs -ls /

      一直进去到自己建的表,都没问题。。。
      百度。。。
      …
      …
      …
      难道是元数据损坏了?
      突然想起来,我解压完以后就直接使用hive了,没有设置MySql作为hive的元数据库。
      嗯,hive的元数据库默认是Derby,只支持一个会话连接。 当在某个目录下启动终端,进入hive shell时,hive默认会在当前目录下生成一个derby文件和一个metastore_db目录,这两个文件主要保存刚刚在shell中操作的一些sql的结果,比如新建的表、添加的分区等等。切换目录启动新的shell,无法查看之前创建的表,不能实现表数据的共享。
      仔细看一看,好像确实和上次启动的目录不一样。。。
      然后到了上次启动的目录,再

sh hive

      嗯,正常了。。。我的库和表都回来了。。。。
      …
      …
      …
      又气又笑。。。

发布了48 篇原创文章 · 获赞 36 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_42845682/article/details/105039321