sqoop常用参数详解与应用

Sqoop常用参数详解与应用

import 常用参数

  • sqoop import … --null-string ‘\\N’ --null-non-string ‘\\N’
Sqoop will by default import NULL values as string null. Hive is however
 using string \N to denote NULL values and therefore predicates dealing with 
NULL (like IS NULL) will not work correctly. You should append parameters
 --null-string and --null-non-string in case of import job or --input-null-string 
and --input-null-non-string in case of an export job if you wish to properly 
preserve NULL values. Because sqoop is using those parameters in 
generated code, you need to properly escape value \N to \\N:
  • sqoop import … --hive-table xxx
如果不指定--hive-table xxx,则hive默认的表名和来源的表明相同
  • sqoop import … --hive-partition-key xxx --hive-partition-value xxx
--hive-partition-key 为创建hive分区表时的分区名称
--hive-partition-value 必须为string类型
  • sqoop import … --hive-import
如果未指定任何字段定界符和记录定界符并使用了--hive-import 则默认分隔符为hive创表的默认分隔,字段分隔(^A),记录分隔(\n)
  • sqoop import … --hive-overwrite
覆盖hive表中的数据
  • sqoop import … --hive-drop-import-delims --hive-delims-replacement xxx
如果数据来源的字符串字段中包含hive的默认定界符(\n和\r字符)或列定界符(\01字符),
则Hive在使用Sqoop导入的数据时会遇到问题。您可以使用该--hive-drop-import-delims选项在
导入时删除这些字符,以提供与Hive兼容的文本数据

或者

可以使用该--hive-delims-replacement选项在导入时用用户定义的字符串替换那些字符,以提供与Hive兼容的文本数据。

仅当使用Hive的默认定界符时,才应使用这些选项;如果指定了不同的定界符,则不应使用这些选项
  • sqoop import … --input-fields-terminated-by xxx
指定hive表的字段分隔福
  • sqoop import … --input-lines-terminated-by < char>
指定hive表的行尾字符
  • sqoop import … --connect < jdbc-uri>
jdbc的连接地址
eg:--connect jdbc:mysql://hadoop111:3306/test
  • sqoop import … --driver < class-name>
jdbc连接的驱动类
eg:--driver com.mysql.jdbc.Driver
  • sqoop import … --username xxx
远程数据库连接的用户名
  • sqoop import … --password xxx
远程数据库连接的密码
  • sqoop import … --delete-target-dir
删除向hdfs导入的目标目录(如果存在)
  • sqoop import … --target-dir xxxx
指定向hdfs导入的路径
eg: --target-dir hdfs://hadoop111:9000/zxh/test
  • sqoop import … --as-textfile(默认) --as-avrodatafile --as-sequencefile --as-parquetfile
将数据导入到某种类型的文件
  • sqoop import … -m 或者 --num-mappers < n>
指定map的数量
因为每个map读取的数据量有限,所以当数据量大时,就需要指定多个map了
  • sqoop import … --splited-by < column-name>
将原始数据按照某一个列(只能是整形)进行拆分,根据设定的map数拆分,每个map里的数据条数不一定一样,但是范围间隔是一样的
  • sqoop import … --check-column < col-name>
指定增量导入数据时要检查的列
(该列的类型不得为CHAR / NCHAR / VARCHAR / VARNCHAR / LONGVARCHAR / LONGNVARCHAR)
  • sqoop import … --last-value < value>
指定上一次导入中要检查的列的最大值
  • sqoop import … --incremental < mode>
指定增量导入数据的模式,mode有两种 append 和 lastmodified

append导入时,需要指定--check-column,并且只导入检查列的值比--last-value所指定的值大的行

lastmodified导入时,需要指定--check-column的类型只能是timestamp或date,不需要指定--last-value
sqoop import 举例 --从mysql导入到hive表

sqoop import \
--connect "jdbc:mysql://hadoop111:3306/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8" \
--driver com.mysql.jdbc.Driver \
--username root \
--password root \
--table customer \
--delete-target-dir \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--hive-import \
--hive-overwrite \
--fields-terminated-by '\t' \
--hive-table default.customer \
--splited-by  customer_id \
 -m 3

export 常用参数

sqoop不支持从hive向mysql直接导数据,只支持从hdfs向mysql导数据

--connect xxx
--driver xxx
--password xxx
--username xxx
--columns xxx
--------------------------------------
上面这几个参数用法和import相同
----------------------------------------
--columns 后面的列值用逗号分隔,未包含在--columns参数中的列需要具有定义的默认值或允许NULL值。
否则,您的数据库将拒绝导入的数据,从而使Sqoop作业失败
  • sqoop export … -m < n>
使用n个map任务并行导出
默认情况下,sqoop在导出过程中并行使用四个任务,可以自己调整,来提高导出的性能
  • sqoop export … --export-dir < dir>
  • sqoop export … --table < table-name>
这是export时两个必须的参数
--export-dir <dir> 指定hdfs导出的源路径
----table <table-name> 指定关系型数据库或者hbase中的表
  • sqoop export … --input-null-string < null-string>

  • sqoop export … --input-null-no-string < null-string>

在--input-null-string和--input-null-non-string参数都是可选的。
如果--input-null-string未指定,则字符串类型列的字符串“ null”将被解释为null。
如果--input-null-non-string未指定,则对于非字符串列,字符串“ null”和空字符串都将解释为null。
注意,除了由所指定的其他字符串外,对于非字符串列,空字符串将始终被解释为null 
  • sqoop的数据增量导出覆盖问题参考(做数仓基本用不到)、

sqoop导出覆盖分析

sqoop export 举例 --从hdfs到出到mysql

sqoop export \
--connect "jdbc:mysql://hadoop111:3306/test?useUnicode=true&characterEncoding=UTF-8" \
--username root \
--password root \
--table ali.customer \
-m 2 \
--input-fields-terminated-by '\t' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--export-dir /user/hive/warehouse/ali.db/customer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值