外面有这么多ETL工具。没有多少是免费的。在自由选择中,他们似乎对ArangoDB没有任何了解或支持。如果有人已经处理过将其数据迁移到ArangoDB并自动完成此过程的问题,我很想知道您是如何做到这一点的。下面我列出了几种ETL工具的选择。这些选择实际上是我从2016年星火欧洲演讲中得到的。
* 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发布于 2018-03-23 20:43:41
为了实现这个目标,我利用了Apache NiFi。下面是我为将数据从源数据库中获取到ArangoDB所做的非常基本的概述。
使用NiFi,您可以从许多标准数据库中提取数据。有许多Java驱动程序已经被创建用于处理数据库,如MySQL、SQLite、Oracle等.
我能够使用两个处理器从源数据库中提取数据,使用:
QueryDatabaseTable ExecuteSQL
这些输出都是NiFi的Avro格式,然后我使用ConvertAvroToJSON处理器将其转换为JSON。这会将输出转换为JSON列表。
虽然NiFi中并没有专门为ArangoDB构建的任何功能,但是有一个特性是内置于ArangoDB中的,那就是它的API。
我能够使用NiFi的InvokeHTTP处理器将数据批量插入到InvokeHTTP中,并使用POST方法将数据插入到一个名为城市的集合中。
我用作RemoteURL的值:
http://localhost:8529/_api/import?collection=cities&type=list&details=true

下面是NiFi的截图。我肯定会用这个来启动我的研究。我希望这能帮到别人。忽略一些额外的处理器,因为我在那里有一些用于测试的处理器,并且正在乱搞晃动,看看我是否可以使用它来“转换”我的JSON。ETL中的"T"。

发布于 2019-03-21 22:34:50
我想在上面添加一个评论,但没能做到。
基于代码新手的响应,我也使用NiFi将数据移动到ArangoDB中。在我的例子中,我将数据从Windows桌面计算机上的Server转移到了ArangoDB桌面计算机上,这两台机器都位于同一网络上。对于9.7M记录= 5.4GB未压缩的JSON数据,流大约需要12分钟--这是合理的性能。
通过使用ExecuteSQLRecord处理器,我对上面的流做了一个小的修改。这个步骤不需要从AVRO转换为JSON。总之,您可以使用两个处理器来移动数据: ExecuteSQLRecord和InvokeHTTP。
对于ExecuteSQLRecord,根据我的测试,我建议提交许多小批(每批大约10,000次),而不是几次大批(每批约500,000次),以避免ArangoDB瓶颈。
对于InvokeHTTP,如果您在与ArangoDB计算机不同的机器上运行NiFi,则需要(1)确保您的ArangoDB机器防火墙端口是打开的,(2)将.conf文件中的服务器地址从127.0.0.1更改为实际的ArangoDB机器IP地址。.conf文件可以在/etc/arangodb3 3文件夹中找到。
对于T(上面的处理器),我通常会让SQL执行转换,而不是抖动,除非需要JSON特定的格式更改。
最后,您可以使用以下三个处理器来完成上述操作: ExecuteSQLRecord、PutFile和ExecuteProcess
对于ExecuteSQLRecord,需要将输出分组属性更改为每个对象一行(即jsonl)。对于ExecuteProcess,您要求NiFi使用适当的选项调用arangoimport。我没有完全在NiFi中完成这个过程,但是一些测试表明完成的时间可以与ExecuteSQLRecord和InvokeHTTP流相媲美。
我同意NiFi是将数据转移到ArangoDB中的一种很好的方法。
https://stackoverflow.com/questions/49436345
复制相似问题