MySQL导入Hive
来源:互联网 发布:wifi计费软件 编辑:程序博客网 时间:2024/06/05 19:26
MySQL导入Hive可以用sqoop或者dump到本地再load into的方式导入Hive。
还有一种方式就是用阿里开源的DataX,试了一下还挺方便的。用sqoop经常会出现数据倾斜的情况,DataX暂时还没有遇见。
要使用DataX只需要填写一个json格式的配置文件即可,整个安装和使用的方法参照官方给出的Quick Start即可。
配置文件中,主要填写mysqlreader与hdfswriter的信息。虽然是MySQL导入Hive表,但因为Hive的数据实际上是存在HDFS中,因此没有单独的hivewriter,用hdfswriter即可。相关参数的文档见:https://github.com/alibaba/DataX/blob/master/hdfswriter/doc/hdfswriter.md
但是每个任务都去填JSON文件也比较繁琐,比如jdbcUrl的配置,MySQL的username和password等,当然希望以参数的形式填写,这样以后要换只要改配置文件就好。还有DataX导入HDFS的形式只有append
与nonConflict
,不支持insert overwrite
这种形式,重跑数据还要手动去truncate就太麻烦了。所以为了方便做一些前后处理以及传入参数,还是使用shell来封装一系列的命令,中间再使用python来动态生成json配置文件更好。
python的代码大概如下
import jsonimport argparse# JSON模板template_json = {...}# 接收参数传入parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)parser.add_argument('--output_json_path', type=str, default='/data/datadev/tmp/mysql2hive.json',help='生成的DataX JSON配置文件存放路径')parser.add_argument('--mysql_jdbc_url', type=str, default=None, help='MYSQL JDBC URL,若有多个用","隔开')# 省略若干参数...args = parser.parse_args()# 填入参数template_json['job']['content'][0]['reader']['parameter']['column'] = args.mysql_jdbc_url # 为了健壮性可以再对参数做一些检查 # 输出JSON配置文件with open(args.output_json_path,'w') as f: f.write(json.dumps(template_json))
shell脚本的写法就可以写得像用sqoop一样了
source ../mysql_confighive_table=table_namehive_db=db_namepython mysql_hive.py \ --mysql_columns field_1,field_2,field_3 \ --mysql_jdbc_url jdbc:mysql://${mysql_host}:${mysql_port}/${mysql_db} \ --mysql_tables ${mysql_table} \ --mysql_username ${mysql_user} \ --mysql_password ${mysql_pw} \ --hive_columns field_1:bigint,field_2:string,field_3:int \ --path /path/to/your/warehouse/${hive_db}.db/${hive_table} \ --fileName ${hive_table} \ --output_json_path /path/to/your/output_json \# 如果需要事先清空HIVE表hive -e "truncate ${hive_db}.${hive_table}"# 执行导入python ${YOUR_DATAX_HOME}/bin/datax.py /path/to/your/output_json# 后处理# ...
阅读全文
0 0
- MySQL导入Hive
- 导入Hive数据导MySQL
- Sqoop MySQL 导入到Hive
- Mysql数据实时导入Hive
- sqoop hive mysql oracle 数据导入
- mysql 导入hdfs、hive、hbase sqoop使用方法
- sqoop 导入mysql数据到hive
- sqoop导入mysql数据到hive中报错
- sqoop从mysql导入到hive
- [Sqoop]将Mysql数据表导入到Hive
- mysql数据导入hive和hbase
- 将Hive表数据导入到mysql
- sqoop mysql数据导入Hive中
- scoop导入数据从mysql到hive
- Hive和MySQL数据互相导入
- 使用sqoop1将hive导入mysql
- Hive中的数据导入到MySQL
- SQOOP从MySQL导入数据到Hive
- hdu_1078_FatMouse and Cheese_神奇的贪心_动态规划_算不上是dp
- Linux学习笔记_系统登陆及欢迎信息(/etc/motd文件,vi)
- vi光标移动命令之二
- 中间件之权限控制
- 网易编程题 彩色的砖块
- MySQL导入Hive
- 爬取百度贴吧图片
- [第七季]10.获取或设置样式和尺寸
- 剑指offer之矩形覆盖
- 【Java进阶-Java动态代理与AOP】
- 30分钟掌握ES6/ES2015核心内容(下)
- 征集峰值QPS/QPS/PV/UV/服务器数量/并发数/吐吞量/响应时间计算公式?
- Java集合 List—add size get contains addAll index indexOf
- 图像处理中的模板匹配c++实现