使用sqoop将选定数据从oracle db导入S3,并使用选定数据在AWS EMR上创建配置单元表脚本
我不熟悉大数据技术。我的工作低于要求,需要帮助,使我的工作更简单 假设我在OracleDB中有两个表,每个表中有500列。我的任务是将所选列数据从两个表(通过联接查询)移动到AWS S3,并在AWS-EMR上的配置单元表中填充数据。 目前,为了完全满足我的要求,我遵循以下步骤使用sqoop将选定数据从oracle db导入S3,并使用选定数据在AWS EMR上创建配置单元表脚本,oracle,hadoop,amazon-s3,hive,sqoop,Oracle,Hadoop,Amazon S3,Hive,Sqoop,我不熟悉大数据技术。我的工作低于要求,需要帮助,使我的工作更简单 假设我在OracleDB中有两个表,每个表中有500列。我的任务是将所选列数据从两个表(通过联接查询)移动到AWS S3,并在AWS-EMR上的配置单元表中填充数据。 目前,为了完全满足我的要求,我遵循以下步骤 使用选定列在AWS-EMR上创建外部配置单元表。我知道列名,但要确定配置单元的列数据类型,我将访问oracle数据库表,确定oracle中的列类型,并创建配置单元脚本 创建表之后,我将使用所选的查询数据编写sqoop导入命
为了简化配置单元表的生成,可以使用Oracle字典
SELECT t.column_name || ' ' ||
decode(t.data_type, 'VARCHAR2', 'VARCHAR', 'NUMBER', 'DOUPLE') ||
' COMMENT '||cc.comments||',',
t.*
FROM user_tab_columns t
LEFT JOIN user_col_comments cc
ON cc.table_name = t.table_name
AND cc.column_name = t.column_name
WHERE t.table_name in ('T1','T2')
ORDER BY t.table_name, t.COLUMN_id;
此数据集的第一列将是CREATE TABLE
命令的列列表。
您需要修改DECODE以正确地将Oracle类型中继到配置单元类型2)
我记得,sqoop很容易导出表,所以您可以在Oracle中创建视图来隐藏内部的联接查询,并通过sqoop导出此视图:
CREATE OR REPLACE VIEW V_T1_T2 AS
SELECT * FROM T1 JOIN T2 ON ...;
但是如何将其存储在S3中呢?