如何在 Nifi 中调用 Bigquery 存储过程
How to call a Bigquery stored procedure in Nifi
我有一个 bigquery 存储过程,它将 运行 在某些 GCS 对象上并从中施展魔法。这些程序手动运行完美,但我想从 Nifi 调用该程序。我使用过 HANA,知道我需要 JDBC 驱动程序来连接和执行查询。
我可以使用 executeprocess 处理器,也可以使用 executeSQL 处理器。老实说我不知道
我不确定如何在 Nifi 中使用 bigquery 存储过程实现这一点。谁能帮我解决这个问题?
提前致谢!!
更新了新的错误如果有人可以帮助
选项 1:执行进程
最接近“手动执行”的是安装 Google Cloud SDK 并在 'executeprocess' 内执行:
bq query 'CALL STORED_PROCEDURE(ARGS)'
或
bq query 'SELECT STORED_PROCEDURE(ARGS)'
选项 2:执行 SQL
如果你想使用 ExecuteSQL 和 Nifi 来调用存储过程,你会 BigQuery JDBC Driver。
'select' 和 'call' 方法都适用于 BigQuery。
哪个选项更好?
我相信 ExecuteSQL 比 Executeprocess 更容易。
为什么?因为您需要在所有可能 运行 执行命令、 和 的系统上安装 GCloud SDK,您必须将 google 云凭据传递给它们。
这意味着分担这份工作并不容易。
另外,这可能涉及所有机器的管理员权限。
在 ExecuteSQL 案例中,您需要:
1 - 将 jdbc 驱动程序复制到 Nifi 安装中的 lib
目录
2 - 使用预先生成的 access/refresh 令牌连接到 BigQuery - 请参阅 JDBC Driver for Google BigQuery Install and Configuration guide - 这是 Oauth 类型 2。
好的部分是,当您导出流时,凭据嵌入其中:无需弄乱 credentials.json 文件等(从安全角度来看,这也可能很糟糕)。
分发 jdbc jar 比安装 GCloud SDK 更容易:只需将文件放到 lib 文件夹中。如果你在多个节点需要它,你可以scp/sftp它,或者用Ambari分发它。
我有一个 bigquery 存储过程,它将 运行 在某些 GCS 对象上并从中施展魔法。这些程序手动运行完美,但我想从 Nifi 调用该程序。我使用过 HANA,知道我需要 JDBC 驱动程序来连接和执行查询。
我可以使用 executeprocess 处理器,也可以使用 executeSQL 处理器。老实说我不知道
我不确定如何在 Nifi 中使用 bigquery 存储过程实现这一点。谁能帮我解决这个问题?
提前致谢!!
更新了新的错误如果有人可以帮助
选项 1:执行进程
最接近“手动执行”的是安装 Google Cloud SDK 并在 'executeprocess' 内执行:
bq query 'CALL STORED_PROCEDURE(ARGS)'
或
bq query 'SELECT STORED_PROCEDURE(ARGS)'
选项 2:执行 SQL
如果你想使用 ExecuteSQL 和 Nifi 来调用存储过程,你会 BigQuery JDBC Driver。
'select' 和 'call' 方法都适用于 BigQuery。
哪个选项更好?
我相信 ExecuteSQL 比 Executeprocess 更容易。
为什么?因为您需要在所有可能 运行 执行命令、 和 的系统上安装 GCloud SDK,您必须将 google 云凭据传递给它们。 这意味着分担这份工作并不容易。
另外,这可能涉及所有机器的管理员权限。
在 ExecuteSQL 案例中,您需要:
1 - 将 jdbc 驱动程序复制到 Nifi 安装中的 lib
目录
2 - 使用预先生成的 access/refresh 令牌连接到 BigQuery - 请参阅 JDBC Driver for Google BigQuery Install and Configuration guide - 这是 Oauth 类型 2。
好的部分是,当您导出流时,凭据嵌入其中:无需弄乱 credentials.json 文件等(从安全角度来看,这也可能很糟糕)。
分发 jdbc jar 比安装 GCloud SDK 更容易:只需将文件放到 lib 文件夹中。如果你在多个节点需要它,你可以scp/sftp它,或者用Ambari分发它。