与ArangoDB配合良好的ETL工具 - 它们是什么?

时间:2018-03-22 18:52:20

标签: etl apache-nifi arangodb

那里有很多ETL工具。没有多少是免费的。而在那里,他们似乎对ArangoDB没有任何了解或支持。如果有人处理过他们的数据迁移到ArangoDB并自动化这个过程,我很想听听你是如何完成这个的。下面我列出了ETL Tools的几个选择。这些选择我实际上是从Bas Geerdink的2016 Spark Europe演示中获得的。

* IBM InfoSphere DataStage
* Oracle Warehouse Builder
* Pervasive Data Integrator
* PowerCenter Informatica
* SAS Data Management
* Talend Open Studio
* SAP Data Services
* Microsoft SSIS
* Syncsort DMX
* CloverETL
* Jaspersoft
* Pentaho
* NiFi

2 个答案:

答案 0 :(得分:3)

我能够利用Apache NiFi来实现这一目标。下面是我为了将数据库从源数据库中获取到ArangoDB中所做的工作的一个非常基本的概述。

使用NiFi,您可以从许多标准数据库中提取数据。有很多Java驱动程序已经创建用于处理MySQL,SQLite,Oracle等数据库....

我能够使用两个处理器使用以下方法从源数据库中提取数据:

QueryDatabaseTable ExecuteSQL

这些格式的输出采用NiFi的Avro格式,然后我使用ConvertAvroToJSON处理器转换为JSON格式。这会将输出转换为JSON列表。

虽然在专门为ArangoDB使用的NiFi中确实没有任何内容,但ArangoDB内置了一个功能,即它的API。

我能够使用NiFi的InvokeHTTP处理器将数据批量插入到ArangoDB中,并使用POST方法将数据插入到名为Cities的集合中。

我用作RemoteURL的值:

http://localhost:8529/_api/import?collection=cities&type=list&details=true

enter image description here

以下是NiFi的截图。我本可以肯定用它来开始我的研究。我希望这有助于其他人。忽略一些额外的处理器,因为我将它们放在那里用于测试目的,并且正在搞乱JOLT,看看我是否可以使用它来转换'转换'我的JSON。 ETL中的"T"

enter image description here

答案 1 :(得分:2)

我想在上面添加评论,但无法这样做。

基于Code Novice的响应,我也使用NiFi将数据移至ArangoDB中。就我而言,我将数据从Windows台式机上的SQL Server移到Linux台式机上的ArangoDB,并且两台计算机都在同一网络上。对于970万条记录= 5.4GB的未压缩JSON数据,流程花费了大约12分钟的时间-合理的性能。

我使用ExecuteSQLRecord处理器对上述流程进行了微小的更改。此步骤无需从AVRO转换为JSON。总共可以使用两个处理器移动数据:ExecuteSQLRecord和InvokeHTTP。

对于ExecuteSQLRecord,根据我的测试,我建议分小批(每批约10,000个)提交,而不是大批(每批约500,000个),以避免ArangoDB瓶颈。

对于InvokeHTTP,如果您在与ArangoDB计算机不同的计算机上运行NiFi,则需要(1)确保您的ArangoDB计算机防火墙端口已打开,并且(2)从127.0更改.conf文件中的服务器地址。您的实际ArangoDB计算机IP地址为0.1。 .conf文件可以在/ etc / arangodb3文件夹中找到。

对于T(上面一侧的处理器),除非需要更改JSON特定的格式,否则通常让SQL执行转换而不是JOLT。

最后,您可以使用以下三个处理器来执行上述操作:ExecuteSQLRecord,PutFile和ExecuteProcess

对于ExecuteSQLRecord,您需要将“输出分组”属性更改为“每个对象一行”(即jsonl)。对于ExecuteProcess,您要求NiFi使用适当的选项来调用arangoimport。我没有完全在NiFi中完成此过程,但是一些测试表明完成时间与ExecuteSQLRecord和InvokeHTTP流相当。

我同意NiFi是将数据移入ArangoDB的绝佳方法。