注意两个地方:
1.时间转换问题:timestamp、date,time
以上时间类型会被sqoop转成int,long型,无法直接转成时间类型
如果要转的有两个办法:
- 1)转成long型,再用from_unixtime转回来,才能看时间(太麻烦)—–parquet表的类型对应为bigint
select *, from_unixtime(cast(SOURCE_LOAD_DATE as BIGINT) DIV 1000000) as SOURCE_LOAD_DATE from table_name;
- 2)直接转成string型(直观,可以直接看)——parquet表的数据类型对应为string
另外: 处理datetime中有null的情况
在sql connnect中加入:zeroDateTimeBehavior=convertToNull
如:
--connect jdbc:mysql://192.168.1.100/test?zeroDateTimeBehavior=convertToNull
参考:https://avro.apache.org/docs/current/spec.html
2.浮点类型(float,double,decimal)
sqoop导数据使用avro组件,启用小数(decimal) 必须要加以下参数:
-Dsqoop.avro.decimal_padding.enable=true -Dsqoop.parquet.logical_types.decimal.enable=true
-Dsqoop.avro.logical_types.decimal.default.precision=38
-Dsqoop.avro.logical_types.decimal.default.scale=10
—parquet中对应的数据类型为decimal(precision,scale)
,如decimal(19,3)
参考:https://archive.cloudera.com/cdh6/6.2.0/docs/sqoop-1.4.7-cdh6.2.0/SqoopUserGuide.html#_enabling_logical_types_in_avro_and_parquet_import_for_numbers
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100396.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...