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