最近做的项目中有接触到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一遍。
领取专属 10元无门槛券
私享最新 技术干货