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的代码大概如下