sqoop数据迁移 mysql导入Hive hive导出到mysql

导入模板

sqoop import \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password 123456\
--table users\
--fields-terminated-by '\t' \
--delete-target-dir \
--num-mappers 1 \
--hive-import \
--hive-database sqoop\
--hive-table users

参数解释:

import:从MySQL导入到HDFS文件系统数据

--connect:数据库JDBC连接字符串

--username:数据库用户名

--password:数据库密码

--table:数据库表名

--columns:数据库列名

--where: 查询条件

--query: 指定查询sql

--delete-target-dir  导入后删除hdfs的目录

--num-mappers 1  指定map数量=1,可以简写为 -m 1

--hive-import       导入hive

--hive-database sqoop   hive的database

--hive-table users      hive表

–hive-partition-key    分区字段

–hive-partition-value  分区值

–hive-overwrite     覆盖数据

实际上import命令,从MySQL导入到HDFS文的背后依然是执行的MapReduce。执行完map后,又执行了load data

如果导出的数据库是mysql  则可以添加一个 属性  --direct ,加了 direct 属性在导出mysql数据库表中的数据会快一点 执行的是mysq自带的导出功能

实际案例

sqoop数据迁移 mysql导入Hive hive导出到mysql_第1张图片

sqoop数据迁移 mysql导入Hive hive导出到mysql_第2张图片

sqoop数据迁移 mysql导入Hive hive导出到mysql_第3张图片

sqoop数据迁移 mysql导入Hive hive导出到mysql_第4张图片

导出

--update-mode主要有两种模式 updateonly(默认)和allowinsert

updateonly:该模式用于更新Hive表与目标表中数据的不一致,即在不一致时,将Hive中的数据同步给目标表(如MySQL、Oracle等的目标表中),这种不一致是指,一条记录中的不一致,比如Hive表和MySQL中都有一个id=1的记录,但是其中一个字段的取值不同,则该模式会将这种差异抹除。

allowinsert:该模式用于将Hive中有但目标表中无的记录同步到目标表中,但同时也会同步不一致的记录。可以这种模式可以包含updateony模式的操作,这也是为什么没有命名为insertonly的原因吧。

sqoop数据迁移 mysql导入Hive hive导出到mysql_第5张图片

sqoop数据迁移 mysql导入Hive hive导出到mysql_第6张图片

 

你可能感兴趣的:(大数据)