我试图将数据从Oracle加载到Hive作为镶木地板。每次我将带有日期/时间戳列的表加载到配置单元时,它会自动将这些列转换为BIGINT。是否可以使用sqoop和作为镶木地板文件将时间戳/日期格式加载到配置单元?
已经尝试在hive中首先创建表,然后使用impala将LOAD DATA INPATH添加到镶木地板文件中 仍然失败并出现错误
"文件XX的列XX列具有不兼容的Parquet架构: TIMESTAMP"
顺便说一下,我正在使用cloudera quickstart vm。感谢
答案 0 :(得分:2)
如果使用Sqoop将RDBMS数据转换为Parquet,请小心解释来自DATE,DATETIME或TIMESTAMP列的任何结果值。底层值表示为Parquet INT64类型,在Impala表中表示为BIGINT。 Parquet值表示以毫秒为单位的时间,而Impala将BIGINT解释为以秒为单位的时间。因此,如果在从Sqoop以这种方式导入的Parquet表中有BIGINT列,则在将其解释为TIMESTAMP类型时将值除以1000。
或者你也可以像这样使用你的Hive查询来获得你想要的TIMESTAMP格式的结果。
FROM_UNIXTIME(CAST(SUBSTR(timestamp_column, 1,10) AS INT)) AS timestamp_column;
答案 1 :(得分:0)
尝试使用sqoop
的配置--map-column-hive
<cols_name>=TIMESTAMP