【问题标题】:Merge multiple delimited file to Hive using ODI使用 ODI 将多个分隔文件合并到 Hive
【发布时间】:2020-06-27 04:02:39
【问题描述】:

基本上我有 3 个输入文件,我需要使用 ODI 将 3 个输入文件合并到 Hive。

文件 1: 帐号、姓名、地址

文件 2: AcctNo,Block_Code,Block_Date

文件 3: AcctNo,Balance1,Balance2

蜂巢: AcctNo,Name,Address,Block_Code,Block_Date,Balance1,Balance2

我对 Hadoop 还是很陌生,在没有接受过 Oracle 数据集成适当培训的情况下被投入到这个项目中,我读到 Hive 本身不支持更新,但可以启用 ACID 事务。

由于我的组织使用 ODI 作为主要的数据集成工具,我需要在 ODI 中完成,谁能告诉我这可以在 1 次 ETL 中完成吗?

我想先在不合并的情况下从文件到 Hive 进行 ETL,然后只在 HIVE 中进行合并,这似乎很耗时。我想知道有没有更好的方法来做到这一点?

【问题讨论】:

    标签: oracle hadoop hive


    【解决方案1】:

    在我的选项中,您可以使用 ODI 或 FTPS 将文件加载到 HDFS。一旦数据在 HDFS 中,您就可以灵活地使用 create external tables,这将简单地创建一个逻辑表,然后您可以将它们加入/合并到一个单独的表中。

    • 使用 hadoop CLI 将文件加载到 HDFS:

    hadoop fs -copyFromLocal file1.csv /user/cloudera/data/file1

    /user/cloudera/data 是您需要根据项目提供的 HDFS 路径。

    • 在 hive 中创建外部表:

      create external table file1_table(
       AcctNo string,
       Name string,
       Address string
      ) row format delimited
      fields terminated by ','  -- assuming your file is comma separated
      stored as textfile 
      location '/user/cloudera/data/file1' -- the hdfs location
      tblproperties("skip.header.line.count"="1"); -- assuming file is having a header section.
      
    • 准备好外部表后,您可以创建一个表,将所有表(file1_table、file2_table、file3_table)连接到一个视图中。

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 2019-05-15
      • 2011-05-30
      • 2017-08-03
      • 2011-02-15
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2016-08-01
      相关资源
      最近更新 更多