利用sqoop将hive和mysql数据互导入

最近做的项目中有接触到hadoop、hive、hdfs相关知识。以此做个总结笔记。

一、sqoop 将数据从mysql 导入 hive

导入步骤为:a.先将mysql数据用sqoop导入到hdfs中,

如果导出的数据库是mysql 则可以添加一个 属性 --direct ,数据导出速度会快一点,我在uat环境中测试了此参数,似乎在数据不大的导出时,对速度的影响不太明显。

--direct 使用直接导出模式(优化速度)

若执行成功后,可在hive验证是否导入成功,命令为

b.在hive中创建一张表

c.将hdfs中的数据导入到hive中

验证是否导入hive成功 :

二、sqoop 将数据从hive导出到 mysql

使用 staging-table(临时表)参数,保证数据完全成功导出到临时表(testDemo_tmp)表中,再把testDemo_tmp 中的数据move到目标表(testDemo)。这种方式的前提是:临时表和目标表表结构必须完全一致。

此种方法导出有个弊端,若mysql表有主键约束,就不能反复执行sqoop导出(会因为主键冲突导出失败)。当时我们的优化方案时,在执行sqoop export之前,调一段shell脚本根据导入条件delete一遍。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181107G20DMU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券