将表从oracle加载到hive,将日期和时间戳转换为字符串

rsl1atfo  于 2021-06-04  发布在  Sqoop
关注(0)|答案(1)|浏览(756)

我在sqoop手册中注意到:
24.5. 配置单元中的架构定义
配置单元用户会注意到,在sql类型和配置单元类型之间没有一对一的Map。通常,没有直接Map(例如,日期、时间和时间戳)的sql类型将强制为配置单元中的字符串。numeric和decimal sql类型将强制为double。在这些情况下,sqoop将在其日志消息中发出警告,通知您精度损失。
我知道sqoop可以使用
--map-column-java --map-column-hive 但我的情况是,我需要一个通用的类型到类型的Map,从rdbms类型到hive类型的Map需要将日期或日期时间转换为日期或时间戳。
有解决办法吗?

iugsix8n

iugsix8n1#

sqoop+orc+hcatalog有助于正确Map。sqoop+parquet它将日期转换为字符串

mysqlHostname=ip-172-31-2-124.us-west-2.compute.internal                          
mysqlDBName=employees                                                             
mysqlUsername=hive                                                                

sqoop import \
      --connect jdbc:mysql://$mysqlHostname/$mysqlDBName \
      --table salaries \
      --username $mysqlUsername \
      -P \
      --hcatalog-table orc_salaries \
      --create-hcatalog-table \
      --map-column-hive  from_date=date,to_date=date\
      --hcatalog-storage-stanza 'stored as orcfile tblproperties ("orc.compress"="ZLIB")'

相关问题