1、添加CatalogOptions=0;NumberPrecisionScale=1
sqoop import \
--connect 'jdbc:mysql://ip:port/db_qyfxpt?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8&tinyInt1isBit=false&CatalogOptions=0;NumberPrecisionScale=1' \
--username root \
--password '123456' \
--query "select * from tyc_stg_branch where 1=1 and \$CONDITIONS " \
--hive-import \
--as-textfile \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-overwrite \
--delete-target-dir \
--target-dir /user/hive/warehouse/qyfxpt_src/src_tyc_branch \
--hive-database qyfxpt_src \
--hive-table src_tyc_branch \
--fields-terminated-by '|' \
--hive-delims-replacement "" \
--hive-partition-key batch_no \
--hive-partition-value 20211223 \
-m 1
2、在Sqoop执行语句中,添加下面的参数
MySQL表中,对应的列的类型为decimal(10,2)。Sqoop会把它转为Hive的double类型,导致精度丢失。
–map-column-hive your_column=‘DECIMAL(10%2C2)’
3、query中转换
CAST((s1 * s2) as DECIMAL(38,d)) * s3