在sqoop-import作业中设置日期格式参数。

问题描述 投票:2回答:1

我在使用sqoop-import从oracle数据库到HDFS parquet文件中将日期列转换为字符串时遇到了问题。我使用的是下面的方法。

sqoop-import -Doraoop.oracle.session.initialization.statements="alter session set nls_date_format='YYYYMMDD'"

我的理解是,在开始传输数据之前,应该执行上面的语句。我还尝试了

-Duser.nls_date_format="YYYYMMDD"

但这也不行,产生的parquet文件仍然包含表格中列出的原始日期格式。如果有关系的话,我在bash脚本中运行这些,并且也在使用 --map-column-java "MY_DATE_COL_NAME=String"我到底做错了什么?

非常感谢。

date hadoop sqoop parquet
1个回答
0
投票

来源:SqoopUserGuide SqoopUserGuide

Oracle JDBC 将 DATE 和 TIME SQL 类型表示为 TIMESTAMP 值。Oracle数据库中的任何DATE列都会在Sqoop中被导入为TIMESTAMP,Sqoop生成的代码会将这些值存储在java.sql.Timestamp字段中。

你可以尝试在查询内导入时将日期转为String。

例如

sqoop import -- query 'select col1, col2, ..., TO_CHAR(MY_DATE_COL_NAME, 'YYYY-MM-DD') FROM TableName WHERE $CONDITIONS'
© www.soinside.com 2019 - 2024. All rights reserved.