【发布时间】:2017-03-02 12:21:32
【问题描述】:
我开始为我的一个项目学习 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 引擎上将临时 TABLE 中的数据插入单独的永久表中
H) 删除临时表
我的问题:
这个流程是最优的吗?也许有一些可以更简单的东西?
是否可以在每个 hadoop 节点上自动调度/部署/执行这个 python 脚本(或其他更好的技术?)?
关于使整个过程易于维护、安排和高效的工具/选项的任何线索?
【问题讨论】:
标签: hadoop import hive hdfs etl