概述
如何把hive中的数据导入到mysql中去,方法很多,在网上找到一个用udf函数直接把hive 中数据导入到mysql中去,按照网上的例子操作了很久也没有导入成功,甚是捉急。。。。。
1、使用udf函数导数据到mysql需要两个jar包
在hive>提示符中:
Hive>add jar /home/hadoop/hive/lib/hive-contrib-0.13.1.jar;
。。。。。。。此去省略执行提示N个字
Hive>add jar /home/hadoop/hive/lib/mysql-connector-java-5.1.17.jar;
。。。。。。。此去省略执行提示N个字
2、为udf函数命名别名红色的字体dboutput,使用起来就方便点
hive>create temporary function dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput';
3、开始导入
Hive>select dboutput('jdbc:mysql://192.168.199.1:3306/dbtest','root','123456','INSERT INTO ep(tid,tname) VALUES (?,?)',tid,tname) from ttv;
----这里只是测试,所以from ttv 后面没带条件也没限制记录数,真实环境就不说了
----ep为mysql中的表,ttv为hive中的表
4、导入时,你会发现执行失败,有错误冒出:java.io.FileNotFoundException: File does not exist: hdfs://mymast:9000/home/hadoop/hive/lib/hive-contrib-0.13.1.jar ,这个就是上面第1条需要增加的两个jar包之一,这个错很明显,就是在hdfs上找不到jar包,马上在hdfs 上创建home/hadoop/hive/lib目录,然后把两个jar都扔进去,错误就解决了。
5、解决错误继续导入:
Hive>select dboutput('jdbc:mysql://192.168.199.1:3306/dbtest','root','123456','INSERT INTO ep(tid,tname) VALUES (?,?)',tid,tname) from ttv;
结果提示任务执行倒是成功了,但是状态码为2,表示导入失败,为0才表示导入成功,又捉急了,在网上找了很久找不到答案。。。。。。一个小时在百度上过去了,抱着试试的心态,想了一下元数据连接名称是hive,是不是用hive可以呢?立马改为hive :
最后
以上就是简单溪流为你收集整理的hive udf 源码 连接mysql_hive利用udf函数直接将统计结果导入mysql的方法详解的全部内容,希望文章能够帮你解决hive udf 源码 连接mysql_hive利用udf函数直接将统计结果导入mysql的方法详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复