是否可以使用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列,以便我知道何时加载了该数据。有可能吗?
提前致谢
答案 0 :(得分: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 :(得分:1)
您可以使用sqoop创建临时配置单元,然后使用带有额外必需列的旧配置单元创建新的配置单元表。