【发布时间】:2019-11-11 22:00:30
【问题描述】:
我正在寻找一些允许我创建预定批处理的开源技术(例如,每 1 小时查询一次像 Oracle 这样的 SQL DB,然后插入到 Kafka。可能会对数据进行一些转换之间)。问题是我需要能够传输大量数据(“大数据”——Oracle 查询可能返回 10GB 或更多)。
例如,我阅读了有关 Apache Airflow 的文章,但它似乎不适合处理大量数据。
我可以为此目的使用哪些其他技术?
【问题讨论】:
我正在寻找一些允许我创建预定批处理的开源技术(例如,每 1 小时查询一次像 Oracle 这样的 SQL DB,然后插入到 Kafka。可能会对数据进行一些转换之间)。问题是我需要能够传输大量数据(“大数据”——Oracle 查询可能返回 10GB 或更多)。
例如,我阅读了有关 Apache Airflow 的文章,但它似乎不适合处理大量数据。
我可以为此目的使用哪些其他技术?
【问题讨论】:
对此的一个简单而简单的解决方案是使用开源 ETL 工具(如 Talend Open Studio for Big Data)创建一个 ETL,从 oracle 读取您的数据,然后将其写入 Kafka。考虑到这就是您所需要的,您可以使用 talend 使用三个组件来完成此操作;
另一种解决方案是将您的 ETL 编码到 spark 作业中,以直接从您的 spark 代码写入 Kafka。如果您有足够的内存,Spark 会提供非常快速的内存中处理,因此您可以利用它。
此外,由于您要按小时批量执行此操作,因此您应该根据时间过滤 oracle 输入,以仅获取增量行,而不是整个快照。
【讨论】:
Quartz Scheduler 是否适合您的用例?
虽然它是一个通用的作业调度库,但我认为它也可以用于长时间运行的 ETL 任务。
引自官网:
Quartz 是一个richly featured,开源作业调度库,它 几乎可以集成到任何 Java 应用程序中——从 最小的独立应用程序到最大的电子商务系统。 Quartz 可用于创建简单或复杂的执行计划 数十、数百甚至数万个工作岗位;任务的工作 被定义为可以虚拟执行的标准 Java 组件 你可以编程他们做的任何事情。 Quartz 调度器包括 许多企业级功能,例如对 JTA 事务的支持 和聚类。
Quartz 可免费使用,在Apache 2.0 license 下获得许可。
【讨论】:
您对 Apache Airflow 的理解有点误导。它旨在用于以编程方式创作、调度和监控工作流。
您可以使用各种技术来完成您打算执行的 ETL 工作。 Airflow 是编排器。可以的
Airflow 还与所有主要的云供应商集成。微软 Azure、GCP、AWS。 See this。它可以与 Qubole、Spark 等很好地配合使用。
我会敦促您在 2 个单独的灯光下查看 2 个单独的事物。做实际的 ETL 工作可能需要它自己的设置并以预定的方式运行它是 Airflow 出现的地方。 Airflow 还可以帮助您处理工作中的 devops 方面。
【讨论】:
您应该看到所有Apache Big Data projects 和Oracle GoldenGate for BigData。 Apache 通过大数据工具的解决方案组合解决了这个问题。
您可以使用Spring Framework: Spring Batch 获取开源解决方案。
【讨论】: