gpt4 book ai didi

oracle - 使用sqoop将所选数据从oracle db导入到S3,并在AWS EMR上使用所选数据创建配置单元表脚本

转载 作者:行者123 更新时间:2023-12-02 21:35:18 26 4
gpt4 key购买 nike

我是大数据技术的新手。我正在满足以下要求,需要帮助以简化我的工作。

假设我在oracle db中有2个表,每个表中有500列。我的任务是将两个表中的选定列数据(通过联接查询)移至AWS S3,并在AWS-EMR上的 hive 表中填充数据。
目前,要满足我的要求,请按照以下步骤操作。

  • 使用选定的列在AWS-EMR上创建外部配置单元表。我知道列名,但要标识配置单元的列数据类型,我将转到oracle数据库表并标识oracle中的列类型并创建配置单元脚本。
  • 创建表后,我正在使用所选查询数据编写sqoop import命令,并将目录目录提供给S3。
  • 根据S3数据修复表。

  • 为了详细说明,
    假设T1和T2是两个表,T1从T1_C1到T1_C500有500列,具有各种数据类型(数字,变量,日期)等。类似地,T2从T2_C1到T2_C500也有500列。
    现在假设我要移动一些列,例如:T1_C23,T1_C230,T1_C239,T2_C236,T1_C234,T2_C223到S3并为所选列创建配置单元表,并且要了解数据类型,我需要查看T1和T2表架构。
    有没有更简单的方法来实现这一目标?
    在上述步骤中,第一步需要花费大量的手动时间,因为我需要查看表架构并获取所选列的数据类型,然后创建配置单元表。

    简要介绍工作环境。

    在数据中心上运行的服务:
  • Oracle数据库
  • Linux机器上的Sqoop。

  • sqoop与oracle db通信,并配置为将数据推送到S3上。

    在AWS上运行的服务:
  • S3
  • AWS EMR配置单元

  • hive与S3对话,并使用S3数据修复该表。

    最佳答案

    1)
    为了简化配置单元表的生成,您可以使用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类型正确地截断为Hive类型

    2)
    我记得,sqoop可以轻松导出表,因此您可以在Oracle中创建 View 以在其中隐藏联接查询并按sqoop导出此 View :
    CREATE OR REPLACE VIEW V_T1_T2 AS
    SELECT * FROM T1 JOIN T2 ON ...;

    关于oracle - 使用sqoop将所选数据从oracle db导入到S3,并在AWS EMR上使用所选数据创建配置单元表脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760270/

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