hive与mysql的整合

hive与mysql的整合


1. 配置文件hive-site.xml的修改
< property>
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:mysql://will-vm1: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用户名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
  <value>abc123_</value>
  <description>密码</description>
</property>
<property>
 <name>datanucleus.autoCreateSchema</name>
 <value>fasle</value>
 <description>如果库里没有的话,创建需要的数据库。创建后把它设为false</description>
</property>


注意:
a. 如果没有createDatabaseIfNotExist=true,需要保证数据库hive已经存在;
b. 可以指定编码jdbc:mysql://localhost:3306/hive_hdp?characterEncoding=UTF-8&createDatabaseIfNotExist=true


2. 需要把一个jar包mysql-connector-java-5.1.15-bin.jar拷贝到hive的lib目录下才行,否则执行语句的时候会报错,类似下面这样
hive> show tables;
FAILED: Error in metadata: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
NestedThrowables:
java.lang.reflect.InvocationTargetException
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

3. 下载测试数据:
wget http://www.grouplens.org/sites/www.grouplens.org/external_files/data/ml-data.tar.gz
tar xvzf ml-data.tar.gz
这是官网给的地址。。总是404或者301什么的。建议自己去搜索下载可以找到我试了下面的地址:
wget http://code.google.com/p/hadoop-clusternet/source/browse/trunk/clusternet/thirdparty/data/ml-data.tar__0.gz?r=20
是可以的,不过弄下来要改一下名字: mv ml-data.tar__0.gz?r=20 ml-data.tar.gz


4. 开始测试:
4.1 首先建立数据表:
CREATE TABLE u_data (
 userid INT,
 movieid INT,
 rating INT,
 unixtime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
4.2 之后加载刚刚下载的数据进入数据表u_data:
LOAD DATA LOCAL INPATH '/home/will/testforhadoop/ml-data/u.data' 
OVERWRITE INTO TABLE u_data;
注:这里也可以使用相对路径 load data local inpath 'ml-data/u.data' overwrite into table u_data;
4.3 在hive中进行验证数据的导入:select count(1) from u_data.命令行窗口会输出mapreduce的详细过程以及最终结果.也可以在web端查看任务执行情况。
注:貌似大部分运行都会触发mapreduce任务,但是有几个包含*的查询不会触发,比如select * from u_data. 其他的就暂时没有试出来了。
4.4 退出hive,登陆mysql,进入相应数据库,show tables。可以发现mysql里面已经有了结构。


成功结束!

参见:https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-DDLOperations



todo: hive在mysql或者derby下的存储结构或者机制分析。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值