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