Open source ETL批处理

Open source ETL批处理,open-source,batch-processing,schedule,Open Source,Batch Processing,Schedule,我正在寻找一些开源技术,使我能够创建计划的批处理(例如,每隔1小时查询一些SQL数据库,如Oracle,并插入到Kafka。可能会对这些数据库之间的数据进行一些转换)。问题是我需要能够传输大量数据(“大数据”-Oracle查询可能返回10GB或更多) 例如,我读过Apache Airflow,但它似乎不适合大量数据 我还可以使用哪些其他技术来实现这一目的?一个简单易行的解决方案是使用Talend open Studio for Big Data之类的开源ETL工具创建一个ETL,从oracle读

我正在寻找一些开源技术,使我能够创建计划的批处理(例如,每隔1小时查询一些SQL数据库,如Oracle,并插入到Kafka。可能会对这些数据库之间的数据进行一些转换)。问题是我需要能够传输大量数据(“大数据”-Oracle查询可能返回10GB或更多)

例如,我读过Apache Airflow,但它似乎不适合大量数据


我还可以使用哪些其他技术来实现这一目的?

一个简单易行的解决方案是使用Talend open Studio for Big Data之类的开源ETL工具创建一个ETL,从oracle读取数据,然后将其写入Kafka。考虑到这就是您所需要的,您可以使用talend使用三个组件完成这项工作

  • 触手输入
  • tMap
  • 卡夫卡输出

另一个解决方案是在spark作业中编写ETL代码,直接从spark代码写入Kafka。如果您有足够的内存,Spark可以提供非常快速的内存处理,因此您可以利用它

此外,由于您要以每小时一次的方式执行此操作,因此您应该根据时间筛选oracle输入,以便仅获取增量行,而不是整个快照。

您应该看到所有和。 Apache通过大数据工具的解决方案组合解决了这个问题

并且您可以将用于开源解决方案。

对于您的用例来说已经足够好了吗

虽然它是一个通用的作业调度库,但我认为它也可以用于长时间运行的ETL任务

引用官方网站:

Quartz是一个开源的作业调度库 可以集成到几乎任何Java应用程序中—从 最大电子商务系统的最小独立应用程序。 Quartz可用于创建简单或复杂的执行计划 数十个、数百个甚至数万个工作岗位;任务是什么的工作 定义为可以虚拟执行的标准Java组件 你可以让他们做任何事。石英调度器包括 许多企业级功能,例如对JTA事务的支持 和聚类

石英是免费使用的,根据许可证


您对Apache Airflow的理解有点误导。它用于以编程方式编写、调度和监视工作流

您可以使用各种技术来完成您想要完成的ETL工作。气流是用来协调的。可以

  • 监视Cron作业
  • 将数据从一个地方传输到另一个地方(可能包括定期从多个来源获取数据)
  • 机器学习管道
Airflow还与所有主要云供应商集成。Azure女士,GCP,AWS。它可以很好地与Qubole、Spark等合作


我希望你们能从两个不同的角度看两件不同的事情。执行实际的ETL工作可能需要它自己的设置,以预定的方式运行它是气流进入画面的地方。气流还可以帮助您完成devops方面的工作。

我在Talend中找不到一种本地方式来安排工作(从我在谷歌上搜索的内容)。关于Spark-我正在寻找无代码(或最小)解决方案。关于每小时一次的批处理,我当然使用基于时间的批处理,只获取新数据,但这些数据可以达到几GB。@ChikChak,没错,在开源版本中没有本机调度,您必须构建作业并从cron作业调用批处理文件。我没有提到,但我已经启动并运行了流式ApacheNIFI流。您认为Airflow作为NiFi流的调度程序是否可行?也就是说,像Airflow这样的东西会安排一个触发器来运行对某个MQ的查询,NiFi将使用该MQ并因此保持流,或者仅仅为此使用Airflow是不是太过了?在我看来,创建一个包含两个操作符的DAG——一个用于从Oracle读取,一个用于向Kafka写入,不会很好地工作,因为它们将通过Xcom进行通信,这只是一个SQL表,当数据大约为几GB时,听起来不是个好主意。另一方面,另一个选择是创建Oracle2Kafka的oeprator,但我将无法在两者之间进行任何进一步的转换(如分割数据)。我不想使用GoldenGate,因为它只是针对Oracle的一个非常具体的解决方案,我说Oracle就是一个例子,它可以是任何其他数据库。除了哪种技术可以实现实际逻辑?@ChikChak一个简单的Java程序(调度器)加上您的ETL(作业),如下所示。