【问题标题】:ETL Tools that function well with ArangoDB - What are they?与 ArangoDB 配合良好的 ETL 工具 - 它们是什么?
【发布时间】:2018-03-22 18:52:19
【问题描述】:

那里有很多 ETL 工具。免费的不多。在免费的选择中,他们似乎对 ArangoDB 没有任何了解或支持。如果有人处理过将他们的数据迁移到 ArangoDB 并自动化此过程的问题,我很想听听您是如何做到这一点的。下面我列出了我们为 ETL 工具提供的几种选择。这些选择实际上是从 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

【问题讨论】:

    标签: etl apache-nifi arangodb


    【解决方案1】:

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

    使用 NiFi,您可以从许多标准数据库中提取数据。已经创建了许多 Java 驱动程序来与 MySQL、SQLite、Oracle 等数据库一起使用......

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

    QueryDatabaseTable ExecuteSQL

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

    虽然 NiFi 中确实没有任何东西专门为与 ArangoDB 一起使用而构建,但 ArangoDB 内置了一项功能,那就是它的 API。

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

    我用作 RemoteURL 的值:

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

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

    【讨论】:

      【解决方案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) 将 .conf 文件中的服务器地址从 127.0.0 更改为 .conf 文件。 0.1 到您的实际 ArangoDB 机器 IP 地址。 .conf 文件可以在 /etc/arangodb3 文件夹中找到。

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

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

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

      我同意 NiFi 是将数据移动到 ArangoDB 的绝佳方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-07
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 2016-08-18
        • 2010-10-09
        相关资源
        最近更新 更多