gpt4 book ai didi

Hadoop 导入数据 - 正确的 ETL 方法

转载 作者:行者123 更新时间:2023-12-02 21:03:32 24 4
gpt4 key购买 nike

我开始为我的一个项目学习 Hadoop 堆栈(hadoop 堆栈中的新手)。我试图找出将数据放入 HIVE 的 ETL 过程的最佳方法。我有一些可行的解决方案,但我认为它不是最佳的,并且有更好的选择。

我的情况:
我有系统生成的二进制文件中的原始数据。在将它们放在 HDFS/HIVE 上之前,我必须使用 unix 控制台程序(非常复杂)解析它们以获取带有数据的文本行,然后将其放置到 HIVE 表中。

我目前的解决方案:

  • 系统向 Kafka 添加一条消息,表示有一个新的二进制文件等待处理。
  • 我在 hadoop 主节点上有一个 python 脚本(至少现在是这样):

    A) 接收 Kafka 消息

    B) 下载文件。

    C) 执行控制台程序

    D) 将文本输出保存到 CSV

    E) 将 CSV 文件推送到 HDFS

    F) 从 CSV 文件在 HIVE 中创建临时表

    G)将临时表中的数据插入到 ORC 引擎上的单独表中

    H) 删除临时表

  • 我的问题:
  • 这个流程是最优的吗?也许有一些可以更简单的东西?
  • 是否可以在每个 hadoop 节点上自动安排/部署/执行这个 python 脚本(或其他更好的技术?)?
  • 关于使整个过程易于维护、安排和高效的工具/选项的任何线索?
  • 最佳答案

    I assume your point 2 - > D has a constant layout for csv. In That case , You may combine points F and H , rather than creating and dropping table every-time , You can create a template temp-table and overwrite data every next time.



    例如:
    create external table  template
    (
    ---- Your csv schema.
    )

    接下来,您可以尝试以下类型的插入:
    LOAD DATA LOCAL INPATH '%s' OVERWRITE INTO TABLE template;

    这将减少您的处理时间。

    我不确定 java ,但我使用了很多 python 并在我的工作中实现了这些类似的要求。由于它的多样性和可用的不同模块,我从未对 python 感到任何挑战。

    If you are implementing this in UNIX box , you may either use cron or oozie to schedule the whole automation.

    关于Hadoop 导入数据 - 正确的 ETL 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42544282/

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