Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何在Nifi中调用Bigquery存储过程_Google Cloud Platform_Google Bigquery_Apache Nifi - Fatal编程技术网

Google cloud platform 如何在Nifi中调用Bigquery存储过程

Google cloud platform 如何在Nifi中调用Bigquery存储过程,google-cloud-platform,google-bigquery,apache-nifi,Google Cloud Platform,Google Bigquery,Apache Nifi,我有一个bigquery存储过程,它将在一些GCS对象上运行,并发挥神奇的作用。这些过程手动运行得很好,但我想从Nifi调用该过程。我与HANA合作过,知道我需要JDBC驱动程序来连接和执行查询 我可以使用executeprocess处理器,也可以使用executeSQL处理器。老实说,我不知道 我不知道如何用bigquery存储过程在Nifi中实现这一点。有人能帮我吗 提前谢谢 如果有人可以帮助,则更新为新错误 选项1:执行过程 最接近“手动执行”的方法是安装Google Cloud SDK并

我有一个bigquery存储过程,它将在一些GCS对象上运行,并发挥神奇的作用。这些过程手动运行得很好,但我想从Nifi调用该过程。我与HANA合作过,知道我需要JDBC驱动程序来连接和执行查询

我可以使用executeprocess处理器,也可以使用executeSQL处理器。老实说,我不知道

我不知道如何用bigquery存储过程在Nifi中实现这一点。有人能帮我吗

提前谢谢

如果有人可以帮助,则更新为新错误

选项1:执行过程 最接近“手动执行”的方法是安装Google Cloud SDK并在“executeprocess”中执行:

bq query 'CALL STORED_PROCEDURE(ARGS)'

选项2:ExecuteSQL 如果您想将ExecuteSQL与Nifi一起使用来调用存储过程,您将使用

“select”和“call”方法都适用于BigQuery

哪种选择更好? 我相信ExecuteSQL比Executeprocess简单

为什么??因为您需要在所有可能运行executecommand的系统上安装GCloud SDK,并且必须将google云凭据传递给他们。 这意味着分担工作并不容易

另外,这可能涉及所有机器的管理员权限

在ExecuteSQL情况下,您需要:

1-将jdbc驱动程序复制到Nifi安装中的
lib
目录

2-使用预生成的访问/刷新令牌连接到BigQuery-请参阅-这是Oauth类型2

好的方面是,当您导出流时,凭证被嵌入其中:不需要弄乱credentials.json文件等(从安全角度来看,这也可能是不好的)


分发JDBCJAR比安装GCloudSDK更容易:只需在lib文件夹中放置一个文件。如果您在多个节点中需要它,您可以使用scp/sftp或与Ambari一起分发。

非常感谢您的回答。我将尝试按照您的指导使用executeSQL。谢谢!!我试过你建议的第二种选择。我将客户机id和客户机机密提供给DBCPoolConnection。因为我的虚拟机是无头的(无GUI),所以它试图运行xdg open来获取访问令牌。我做错什么了吗?这是我的数据库url:jdbc:googlebigquery:ProjectId=“ProjectId”;DatasetId=“DatasetId”;AuthScheme=“OAuth”;InitiateAuth=“GETANDREFRESH”;OAuthClientId=“clientid”;OAuthClientSecret=“clientsecret”;它正在尝试打开web浏览器以启动OAUTH-尝试将OAuthType=2添加到jdbc连接字符串中,并使用预生成的访问和刷新令牌(请参阅)
bq query 'SELECT STORED_PROCEDURE(ARGS)'