将 NiFi 连接到 Vertica

Connecting NiFi to Vertica

我正在尝试将从 SFTP 服务器抓取的 CSV 文件作为新 table 上传到 Vertica。我配置了 GetSFTP 处理器 - 但我似乎无法理解如何设置与 Vertica 的连接并执行 SQL?

除了来自@sKwa 的批量加载器想法之外,您还可以使用 Vertica JAR 和将执行 SQL 的 PutSQL 处理器创建一个 DBCPConnectionPool。如果你需要从数据转换为SQL你可以使用ConvertJSONToSQL,否则使用PutDatabaseRecord,它基本上是一个"ConvertXToSQL -> PutSQL"在一起。

1 - 您需要使用 Vertica JAR 设置 DBCPConnectionPool,就像提到的 @mattyb。

2 - 创建一个暂存区,您将在其中放置可执行文件(复制脚本)

3 - 创建一个模板来管理您的脚本或加载(替换文本处理器)

注:

  • 您在此处看到的参数来自上游处理器的流文件。
  • 这是一个可重用的进程组,因此有许多其他 PG 会将其输出发送到此。

示例:

  • data_feed 任务将 运行 启动数据馈送 (此 PG 将保存它自己的参数和值)-如果没有错误执行到这一步,它是否失败它会转到另一个处理错误的可重用 PG。

  • 每日摄取过程(每 5 分钟滴流加载),- PG 将准备 CSV 文件,将其移至暂存,确保所有格式都正确,- 如果正在执行,则没有错误出现在这一步,如果失败,它会转到另一个处理错误的可重用PG。

等等,许多 PG 将使用这个可重用的 PG 在数据库中加载数据

PG - 进程组的代表

  • 这是我的样子

./home/dbadmin/.profile /opt/vertica/bin/vsql -U $username -w $password -d analytics -c " copy ${TableSchema}.${TableToLoad} FROM '${folder}/*.csv' delimiter '|' enclosed by '~' null as ' ' STREAM NAME '${TableToLoad} ${TaskType}' REJECTED DATA AS TABLE ${TableSchema}.${TableToLoad}_Rejects; select analyze_statistics('${TableSchema}.${TableToLoad}');"

-您也可以添加参数或创建新参数一次

4 - 更新属性过程以便您可以命名可执行文件。

5 - 将 Vertica 加载脚本放置在机器上的 Putfile 过程。

6 - ExecuteStreamComnand - 这将 运行 shell 脚本。 - 审计日志和任何其他东西都可以在这里完成。

更好 - 请参阅附带的模板,其中包含我使用的可重复使用的 PG,数据通过 NIFI 加载到 Vertica 中。

http://www.aodba.com/bulk-load-data-vertica-apache-nifi/

至于 Vertica DBCP,设置应如下所示:

  • 红色标记是你的地方 ipaddress:port/dbadmin

注: 此 DBCPConnectionPool 可以在项目级别(在 PG 内)或 NIFI 级别(使用 Controller Services 菜单在主 canvas 中创建它)