亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 GCP 中的 Cloud Functions 調用用 Go 編寫的 Dataflow 作業

如何從 GCP 中的 Cloud Functions 調用用 Go 編寫的 Dataflow 作業

Go
倚天杖 2023-06-01 14:59:34
我的目標是創建一種機制,當新文件上傳到云存儲時,它會觸發云函數。最終,此 Cloud 函數將觸發 Cloud Dataflow 作業。我有一個限制,即 Cloud Dataflow 作業應該用 Go 編寫,而 Cloud Function 應該用 Python 編寫。我現在面臨的問題是,我無法從 Cloud Function 調用 Cloud Dataflow 作業。用 Go 編寫的 Cloud Dataflow 中的問題是template-locationApache Beam Go SDK 中沒有定義變量。這就是我無法創建數據流模板的原因。而且,由于沒有數據流模板,我可以從云函數調用云數據流作業的唯一方法是編寫一個 Python 作業,該作業調用運行數據流作業的 bash 腳本。bash 腳本如下所示:go run wordcount.go \--runner dataflow \--input gs://dataflow-samples/shakespeare/kinglear.txt \--output gs://${BUCKET?}/counts \--project ${PROJECT?} \--temp_location gs://${BUCKET?}/tmp/ \--staging_location gs://${BUCKET?}/binaries/ \--worker_harness_container_image=apache-docker-beam-snapshots-docker.bintray.io/beam/go:20180515但上述機制無法創建新的數據流作業,而且看起來很麻煩。有沒有更好的方法來實現我的目標?我在上述機制上做錯了什么?
查看完整描述

2 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

Cloud Function 應該用 Python 編寫

Cloud Dataflow Client SDK 只能從模板創建數據流作業。因此,除非您創建自己的模板,否則無法實現此要求。

我有一個限制,即 Cloud Dataflow 作業應該用 Go 編寫

由于您的 Python 目標無法實現,您的另一個選擇是在 Cloud Functions 中運行您的 Go 程序。Go 的 Cloud Functions 在alpha. 但是,我不知道有什么方法可以在 Cloud Functions 中執行 Apache Beam (Dataflow) 程序。請記住,Apache Beam 程序開始在本地執行并將其自身連接到在其他地方(Dataflow、Spark 等)運行的集群,除非您選擇runner=DirectRunner.

您選擇了最不成熟的語言來使用 Apache Beam。成熟度和功能的順序是 Java(優秀)、Python(很好并且每天都在進步)、Go(還沒有準備好迎接黃金時段)。

如果您想在 Cloud Dataflow 上運行用 Go 編寫的 Apache Beam 程序,那么您將需要使用一個平臺,例如您的本地系統、Google Compute Engine 或 Google App Engine Flex。我不知道 App Engine Standard 是否可以在 Go 中運行 Apache Beam。


查看完整回答
反對 回復 2023-06-01
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

我發現 Apache Beam Go SDK 支持worker_binary類似于template-locationJava 數據流作業的參數。使用此選項,我能夠從我的 python 云函數啟動一個 go 數據流作業。



查看完整回答
反對 回復 2023-06-01
  • 2 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號