我正在寻找一些开源技术,可以让我创建预定的批处理(例如,每1小时查询一些SQL数据库,如Oracle,并插入到Kafka。可能会对之间的数据进行一些转换)。问题是,我需要能够传输大量数据(“大数据”- Oracle查询可能返回10 or或更多)。
例如,我读过关于Apache Airflow的文章,但它似乎不适合大数据量。
我还可以使用哪些其他技术来实现此目的?
发布于 2020-02-15 00:34:14
一个简单且容易的解决方案是使用像Talend Open Studio for Big Data这样的开源ETL工具来创建一个ETL,该ETL从oracle读取数据,然后将其写入Kafka。考虑到这就是您所需要的,您可以使用三个组件使用talend来完成此任务;
另一种解决方案是在spark作业中编写ETL,以便直接从spark代码写入Kafka。如果你有足够的内存,Spark提供了非常非常快的内存处理,所以你可以利用它。
此外,由于您将以每小时一次的批处理方式执行此操作,因此应该根据时间对oracle输入进行筛选,以便只提取增量行,而不是整个快照。
发布于 2020-02-15 18:14:56
您应该可以看到Apache Big Data projects和Oracle GoldenGate for BigData的全部内容。Apache正在通过大数据工具的解决方案组合来解决这个问题。
您可以将Spring Framework: Spring Batch用于开源解决方案。
发布于 2020-02-16 00:04:20
对于您的用例,Quartz Scheduler是否足够好?
虽然它是一个通用的作业调度库,但我认为它也可以用于长时间运行的ETL任务。
引用自官方网站:
Java是一个richly featured开源作业调度库,几乎可以集成到任何
应用程序中--从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的调度,用于执行数十个、数百个甚至数万个作业;这些作业的任务被定义为标准Java组件,可以执行您编程执行的几乎任何任务。Quartz Scheduler包括许多企业级功能,例如支持JTA事务和集群。
Quartz是免费使用的,在Apache 2.0 license下获得许可。
https://stackoverflow.com/questions/58809259
复制相似问题