是否可以导入带有sqoop的表并添加额外的时间戳列?

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

是否可以使用sqoop命令“import table”将表从oracle数据库导入到Hadoop集群,并添加一个包含当前时间戳的额外列(用于故障排除)?到目前为止,我有以下命令:

sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect jdbc:oracle:thin:@//MY_ORACLE_SERVER --username USERNAME --password PASSWORD --target-dir /MyDIR --fields-terminated-by '\b' --table SOURCE_TABLE --hive-table DESTINATION_TABLE --hive-import --hive-overwrite --hive-delims-replacement '<newline>'

我想在表中添加一个timestamp列,以便我知道何时加载了该数据。可能吗?

提前致谢

oracle hadoop timestamp sqoop
2个回答
1
投票

您可以使用自由格式查询导入而不是表导入,并调用时间戳函数:

sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect jdbc:oracle:thin:@//MY_ORACLE_SERVER --username USERNAME --password PASSWORD --target-dir /MyDIR --fields-terminated-by '\b' ----query 'SELECT a.*,systimestamp FROM SOURCE_TABLE a' --hive-table DESTINATION_TABLE  --hive-import --hive-overwrite --hive-delims-replacement '<newline>'

也许您可以使用sysdate而不是systimestamp(较小的数据类型但精度较低)


1
投票

您可以使用sqoop创建临时配置单元,然后使用带有额外必需列的旧配置单元创建新的配置单元表。

© www.soinside.com 2019 - 2024. All rights reserved.