Sqoop导入SQLServer业务数据

1 Sqoop

要导入的数据里面包含\n,\r,\001之类的特殊字符,那么要使用–hive-drop-import-delims去掉这些特殊字符

1.1 使用 import-all-tables将MySQL业务数据全量同步到HDFS

注意:使用sqoop import-all-tables到hdfs时不能使用–target-dir应使用–warehouse-dir

/usr/bin/sqoop import-all-tables \
--connect "jdbc:mysql://ip:port/database" \
--username '用户名' \
--password '密码' \
--warehouse-dir  "/data/hive/warehouse/mysql/zhongmo" \
--autoreset-to-one-mapper --m 1 \
--compress \
--compression-codec com.hadoop.compression.lzo.LzopCodec \
--fields-terminated-by ','

1.2 sqoop 直接导入Hive表的问题

1.1.1 如果采用parquet+snappy压缩,Sqoop导入MySQL或SqlServer的表存在字段类型是tinyint或bit时,到Hive表中默认是boolean

在这里插入图片描述
1.1.2 出现问题的原因解释

Sqoop抽取数据到Hive或HDFS时,会自动将tinyint或bit的列转为boolean类型,这就是导致抽取到Hive或HDFS中的数据中只有0和1的原因。因为默认情况下,MySQL JDBC connector 会将Tinyint(1)映射为java.sql.Types.BIT类型,而Sqoop默认会映射为Boolean类型。

官网解释

**1.1.3 解决方案 1 **
sqoop导入时加
–map-column-java 将其转换为java数据类型
–map-column-hive 将其转换为hive数据类型

import_ods_表名(){
sqoop-impor
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值