【应用场景】
sqoop是常用的 关系数据库离线同步到数仓的 工具
sqoop导入有两种方式:
1)直接导入到hdfs,然后再load到hive表中
2)直接导入到hive中
一般生产情况导业务库数据,都是指定导入,不能全部导入,对业务库压力大。
下面介绍sqoop import 导入到hive中的 完整参数命令
【sqoop-import-mysql到hive完整命令】
1)需要已知的参数
- mysql 的jdbc连接参数:jdbc链接、用户名、密码
- mysql同步表的信息:列、表名
- hive链接参数 :是否有链接限制
- hive目标表的信息:表名、分隔符、是否分区
2)具体参数
两种方式:1)指定mysql列导入 2)写相应的mysql的query sql语句导入
1)制定mysql表的某列、某表
#(必须参数)sqoop 导入,-D 指定参数,当前参数是集群使用队列名称
sqoop import -D mapred.job.queue.name=q \
#(必须参数)链接mysql jdbs参数 xxxx路径/yy库?mysql的参数(多个参数用&隔开)
#tinyInt1isBit=false这个参数 主要解决 从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
--connect jdbc:mysql:xxxx/yy?tinyInt1isBit=false \
#(必须参数)用户名、密码、具体的表
--username xx --password xx
--table xx \
--delete-target-dir \
#(非必须)系统默认是textfile格式,当然也可以是parquet
--as-textfile \
#(非必须)指定想要的列
--columns 'id,title' \
#(必须参数)导入到hive的参数
--hive-import \
#(必须参数)指定分隔符,和hive 的目标表分隔符一致
--fields-terminated-by '\t' \
#(必须参数)hive的库表名
--hive-database xx \
--hive-table xx \
#(必须参数)是不是string 为null的都要变成真正为null
--null-string '\\N' --null-non-string '\\N' \
#(非必须)写入到hive的分区信息,hive无分区无需这步
--hive-partition-key dt \
--hive-partition-value $day \
#写入hive的方式
--hive-overwrite \
--num-mappers 1 \
#(必须参数)导入到hive时删除 \n, \r, and \01
-hive-drop-import-delims \
#sqoop完会生成java文件,可以指定文件的路径,方便删除和管理
--outdir xxx
2)写查询sql 导入
#(必须参数)sqoop 导入,-D 指定参数,当前参数是集群使用队列名称
sqoop import -D mapred.job.queue.name=q \
#(必须参数)链接mysql jdbs参数 xxxx路径/yy库?mysql的参数(多个参数用&隔开)
#tinyInt1isBit=false这个参数 主要解决 从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
--connect jdbc:mysql:xxxx/yy?tinyInt1isBit=false \
#(必须参数)用户名、密码、具体的表
--username xx --password xx \
--delete-target-dir \
#(非必须)系统默认是textfile格式,当然也可以是parquet
--as-textfile \
#(query sql最后要加上\$CONDITIONS)
--query 'select xxx from xxx where \$CONDITIONS' \
#(必须参数)导入到hive的参数
--hive-import \
#(必须参数)指定分隔符,和hive 的目标表分隔符一致
--fields-terminated-by '\t' \
#(必须参数)hive的库表名
--hive-database xx \
--hive-table xx \
#(必须参数)是不是string 为null的都要变成真正为null
--null-string '\\N' --null-non-string '\\N' \
#(非必须)写入到hive的分区信息,hive无分区无需这步
--hive-partition-key dt \
--hive-partition-value $day \
#写入hive的方式
--hive-overwrite \
--num-mappers 1 \
#(必须参数)导入到hive时删除 \n, \r, and \01
-hive-drop-import-delims \
#sqoop完会生成java文件,可以指定文件的路径,方便删除和管理
--outdir xxx