java sqoop加载mysql到hive sqoop从mysql导入数据到hive
  vN9RmRVDDexB 2023年11月02日 156 0


一、简介

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。

  • 把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中。
  • 把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中。
  • 1.4 为sqoop1, 1.9 为sqoop2 ,sqoop1与sqoop2是不兼容的。

实现需要

数据库:
* driver
* URL、username、password
* database、table

hadoop:
* type (hdfp、hive、hbase)
* path 存储到哪里?
* 数据分隔符
* mappers 数量,也就是使用多少线程。

二、命令

查看 sqoop 支持的命令

  • sqoop help

![sqoop 命令列表][1]

显示所有库名

sqoop list-databases \
--connect jdbc:mysql://192.168.66.4:3306 \
--username sendi \
--password 1234

![list-databases 例子][2]

显示某个数据库里所有表

sqoop list-tables \
--connect jdbc:mysql://192.168.66.4:3306/networkmanagement \
--username sendi \
--password 1234

![list-tables 例子][3]

MYSQL 导入数据到 HIVE

sqoop import
--connect jdbc:mysql://192.168.66.4:3306/networkmanagement \
--username sendi \
--password 1234 \
--table people
--hive-import 
--create-hive-table 
--fields-terminated-by "\t"
-m 5
hive 参数
  • –hive-import 必须参数,指定导入hive
  • –hive-database default hive库名
  • –hive-table people hive表名
  • –fields-terminated-by hive的分隔符
  • –hive-overwrite 重写重复字段
  • –create-hive-table 帮创建好 hive 表,但是表存在会出错。不建议使用这个参数,因为到导入的时候,会与我们的字段类型有出入。
  • –hive-partition-key “dt” 指定分区表的字段
  • –hive-partition-value “2018-08-08” 指定分区表的值
导出没有主键的表

可以使用两种方式:
* –split-by 指定切分的字段
* -m 1 : 设置只使用一个map进行数据迁移

过滤条件
  • –where “age>18” 匹配条件
  • –columns “name,age” 选择要导入的指定列
  • –query ‘select * from people where age>18 and $CONDITIONS’: sql语句查询的结果集
  • 不能 –table 一起使用
  • 需要指定 –target-dir 路径
当数据库中字符为空时的处理
  • –null-non-string ‘0’ 当不是字符串的数据为空的时候,用 0 替换
  • –null-string ‘string’ 当字符串为空的时候,使用string 字符替换
提高传输速度
  • –direct 提高数据库到hadoop的传输速度

支持的数据库类型与版本:
* myslq 5.0 以上
* oracle 10.2.0 以上

增量导入

增量导入对应,首先需要知监控那一列,这列要从哪个值开始增量

* check-column id 用来指定一些列
* 这些被指定的列的类型不能使任意字符类型,如char、varchar等类型都是不可以的,常用的是指定主键id.
* –check-column 可以去指定多个列
  • last-value 10 从哪个值开始增量
  • incremental 增量的模式
  • append id 是获取大于某一列的某个值。
  • lastmodified “2016-12-15 15:47:30” 获取某个时间后修改的所有数据
  • –append 附加模式
  • –merge-key id 合并模式

注意:增量导入不能与 –delete-target-dir 一起使用,还有必须指定增量的模式


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
vN9RmRVDDexB