最近想练练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

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐