导入模板

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

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

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

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

导出

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

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

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

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

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

 

相关文章:

  • 2022-12-23
  • 2020-12-22
  • 2022-12-23
  • 2022-01-09
  • 2021-08-17
  • 2022-12-23
  • 2021-08-14
  • 2021-12-24
猜你喜欢
  • 2022-12-23
  • 2021-05-21
  • 2021-09-04
  • 2022-12-23
  • 2021-07-06
  • 2021-09-18
相关资源
相似解决方案