gpt4 book ai didi

mysql - sqoop 日期到 impala 时间戳

转载 作者:行者123 更新时间:2023-11-29 21:39:07 25 4
gpt4 key购买 nike

我正在使用 sqoop 将数据作为 parquet 文件从 MySQL 导入到 hdfs,Impala 使用该文件。将 MySQL DATE 类型转换为 Impala TIMESTAMP 时出现问题。

执行compute stats tableselect *时Impala错误消息是:

File 'hdfs://....parquet'
has an incompatible type with the table schema for column 'day'.
Expected type: INT32. Actual type: INT64

将日期列的数据类型更改为 BIGINT 或 STRING 会使错误消息保持不变。

即使我将 Impala 中的日列类型更改为 STRING 并在 sqoop 中设置 --map-column-java "day=String"(也尝试过 day=Integer 和 Long),我得到:

Expected type: INT32.  Actual type: BYTE_ARRAY in Impala

我还尝试在 jdbc 连接字符串中设置 mapDateToTimestamp=false (和 true),但没有效果

使用 parquet 文件时,如何使用 sqoop 将 MySQL DATE 转换为 Impala TIMESTAMP(请注意,我没有使用 AVRO)?

(我使用的sqoop版本是1.4.5-cdh5.3.3)Sqoop 命令如下所示:

sqoop import
--connect jdbc:mysql://adress/db
--username name
--password pass
--table tableName
--target-dir dir
--as-parquetfile -m 1
--driver com.mysql.jdbc.Driver

编辑:我尝试使用

转换 SQL 日期
--query "SELECT UNIX_TIMESTAMP(STR_TO_DATE(day, '%Y-%m-%d'))

但 Impala 将其视为 INT64,并期望为 INT96。那么另一个问题是如何将其转换为INT96?

最佳答案

你尝试过 INT96 吗?我还认为您无法将 TINYINT、SMALLINT 列转换为 BIGINT

关于mysql - sqoop 日期到 impala 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34680975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com