hive和mysql集成_hive 与mysql集成安装

默认情况下,Hive元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持,配置一个独立的元数据库需要增加以下几步骤:

第一步:安装MySQL服务器端和MySQL客户端,并启动MySQL服务。

此步省略,具体请看http://www.cnblogs.com/linjiqin/archive/2013/03/04/2942497.html

第二步:安装Hive

此步省略,具体请看http://www.cnblogs.com/linjiqin/archive/2013/03/04/2942402.html

第三步:为Hive建立相应的MySQL账户,并赋予足够的权限,执行命令如下:

hadoop@ubuntu:~$ mysql -uroot -pmysql

mysql> CREATE USER 'hive' IDENTIFIED BY 'hive';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;

mysql> flush privileges;重启mysql服务:

sudo service mysql restart

第四步:建立 Hive 专用的元数据库,记得创建时用刚才创建的“hive”账号登陆。

mysql> create database hive;

第五步:在Hive的conf目录下的文件“hive-site.xml”中增加如下配置:

cd $HIVE_HOME/conf

cp hive-default.xml.template hive-default.xml

cp hive-default.xml.template hive-site.xml

从前面我们知道我们的“hive-site.xml”是一个“hive-default.xml.template”的一个拷贝,里面的配置参 数非常之 多,但是并不是我们都需要的,我们知道,Hive 系统会加载两个配置文件一个默认配置文件“hive-default.xml”,另一个就是用户自定义文件“hive-site.xml”。当 “hive-site.xml”中的配置参数的值与“hive-default.xml”文件中不一致时,以用户自定义的为准。所以我们就把我们不需要的 参数都删除掉,只留下上面所示的内容。

备注:其实修改这里的配置文件如果在Linux下面进行则非常麻烦,尽然我们都建立了FTP了,为何不 用, 所以把Master.Hadoop上面的这个配置文件下载下来,按照要求进行修改,这样的文件在Windows进行操作是非常方便的,弄好之后在上传上 去,覆盖原来的即可。

所以在此可将hive-site.xml中

内容清空

hive.metastore.local

true

javax.jdo.option.ConnectionURL

jdbc:mysql://192.168.1.78:3306/hive?characterEncoding=UTF-8

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName

hive

javax.jdo.option.ConnectionPassword

hive

将hive配置到etc/profile中 将$HIVE_HOME/bin配置到PATH中方便使用

将mysql-connector-java-5.1.32.jar拷贝到$HIVE_HOME/lib即可

在bash中执行hive

执行hive遇到一堆问题

Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

at jline.TerminalFactory.create(TerminalFactory.java:101)

at jline.TerminalFactory.get(TerminalFactory.java:158)

at jline.console.ConsoleReader.(ConsoleReader.java:229)

at jline.console.ConsoleReader.(ConsoleReader.java:221)

at jline.console.ConsoleReader.(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

at jline.console.ConsoleReader.(ConsoleReader.java:230)

at jline.console.ConsoleReader.(ConsoleReader.java:221)

at jline.console.ConsoleReader.(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

解决方法:在/etc/profile中添加

export HADOOP_USER_CLASSPATH_FIRST=true

FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Access denied for user 'hive'@'eidlink' (using password: YES)

NestedThrowables:

java.sql.SQLException: Access denied for user 'hive'@'eidlink' (using password: YES)

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

解决方案:

在bash中执行查看hostname 为eidlink

hostname

登陆mysql

mysql -uhive -phive

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

mysql>exit;

service mysql restart

执行hive 即可成功 hive默认启动的日志文件目录为/tmp/登陆用户/hive.log

在192.168.1.78:3306/hive库中将自动创建如下表

tYSreXvhfQr3INENTgCKFTOv+q45NU0TPrlM39Gcb1QoyVfhVwGkn30ED2Ci6xsAojUzr8ITObxPIedozqd7nHxVOp8intVBpQBykHkFwMaqcwA2KgUAG5UCgI1KAcBGpQBgo1IAsFEpANioFABsVAoAtv8HgOn5H7pBXhYAAAAASUVORK5CYII= 

hive> show tables;

OK

Time taken: 1.279 seconds

1)在Hive上建立数据表

hive> CREATE TABLE xp(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

2)从 MySQL 数据库上查看元数据信息

用到的 SQL 语句:

use hive; //使用 hive 数据库库

show tables;//显示 hive 数据库中的数据表

select * from TBLS;//查看 hive 的元数据信息

select * fromCOLUMNS_V2;//查看column信息

到此Hive集成Mysql作为元数据已完成。

success!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值