HIVE元数据库改为mysql

1.先安装mysql,并启动服务
2.为Hive建立相应的MySQL账户,并赋予足够的权限,执行命令如下:
mysql -uroot -p123456
mysql> CREATE USER 'hive' IDENTIFIED BY 'hive';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
mysql> flush privileges;

3.创建数据库hive
mysql> create database hive;
 
4.创建hive用户,并授权

mysql> grant all on hive.* to hive@'%' identified by 'hive'; 

mysql> grant all on hive.* to hive@'gc.localdomain' identified by 'hive';

mysql> grant all on hive.* to hive@'localhost' identified by 'hive';

mysql> flush privileges;

需要注意的是:这里的hive.*的hive是指database,hive@‘%’这里的hive是指dbuser


5.hive的conf配置问题
 A)bin/hive-config.sh
  HADOOP_HOME
  HADOOP_CONF_DIR
  HIVE_HOME
  HIVE_CONF_DIR
 B) conf/hive-default.xml

 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
  <description>password to use against metastore database</description>
</property>


碰到的问题:

1. lower_case_table_names = 1参数设置问题

   mysql和linux一样区分大小写,如果没有在/etc/my.cnf中设置这个参数,默认数据库表是大写,如果工程中需要读取某表是会提示找不到表找不到。

   建议在mysql安装完毕后,修改my.cnf加入该参数,后续创建的database中的table均会不区分大小写(加入参数以前创建的database还是会有影响)。

2. Error in metadata Communications link failure

    原因是在hive-default.xml中jdbc:mysql://hive:3306/
    而这里实际上在mysql创建create user 'hive'@'hive' identified by 'hive' 是会出错的

3. 出现 org.apache.hadoop.hive.ql.hooks.PreExecutePrinter 错误
    原因未知,解决方法是将原来HIVE的目录删除或备份,重新创建HIVE,然后按照步骤一步步来解决的。怀疑是什么地方的配置问题

一般来讲,hive出现问题在数据不重要的情况下可以通过删除hdfs::/user/hive/worehouse,重新创建其所用database来解决;


备注:hive中不支持truncate table 表名的形式存在(也包括 delete from 表名),可通过 hive>dfs -rmr /user/hive/warehouse/表名来清空该表下的数据,以便保持表元数据信息不丢失;或者通过create table 表名 like 表名,也可以。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值