从远程Hadoop服务器通过Hive导出数据到本地MySql

背景

因项目需要,想把远程服务器上的数据(Hadoop数据库)导入本地mysql,所以需要在本地服务器上搭建Hadoop和Hive环境,以便可以访问远程Hadoop数据库。查阅网上的教程,发现还是有各种坑,所以决定自己写一个教程。

Hadoop和Hive的安装配置教程见上一篇笔记:https://www.jianshu.com/p/d41ccdaacf74


查阅很多网上的资料,发现大家都是用Sqoop从Hive数据导入Mysql,但是这种方式貌似都是针对本地上的数据在两个数据库之间互相导入。而从远程Hive服务器取来数据存入本地,其实不需要用Sqoop,直接用Hive的自带功能Beeline,把数据导出到本地csv,然后用mysql命令直接存入MySql数据库即可。

示例如下:

从远程Hive数据库导出数据到本地csv

把以下命令中的ip地址,数据库名称,sql命令,用户名,密码,还有生成文件名称改为你对应的信息即可:

beeline -u jdbc:hive2://ip_address:10000/$database_name -e "$sql_command" -n username -p password --incremental=true --showHeader=true --outputformat=csv2 --silent=true > /app/data_transfer/output/$table_name.csv

MySql读取csv文件导入数据

把如下命令中的数据库名称,sql命令改为你对应的信息即可:

mysql --local-infile $database_name -e "LOAD DATA LOCAL INFILE '/app/data_transfer/output/$table_name.csv' INTO TABLE $table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES"

先写这么多了,其实过程中遇到很多问题,大家有什么问题可以留言,我会及时回复。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。