Go の Apache Beam ParDo フィルター

王林
リリース: 2024-02-05 11:57:58
転載
962 人が閲覧しました

Go 中的 Apache Beam ParDo 过滤器

#質問の内容

私は Python 開発者ですが、データ フロー パイプラインを作成するには go を使用する必要があります。 Python や Java に比べて、Go を使用した Apache Beam の例はそれほど多くありません。

ユーザー名と年齢の構造を持つ次のコードがあります。タスクは、年齢を追加し、年齢に基づいてフィルターすることです。 ageを増やす方法を見つけましたが、フィルタリングの部分で行き詰まっています。

リーリー

以下のような関数を作成しようとしましたが、これはユーザーオブジェクトの代わりにブール値を返します。単純な何かが欠けていることはわかっていますが、それを理解できません。

リーリー

Pythonでは以下のような関数を書くことができます。

package main import ( "context" "flag" "fmt" "github.com/apache/beam/sdks/v2/go/pkg/beam" "github.com/apache/beam/sdks/v2/go/pkg/beam/log" "github.com/apache/beam/sdks/v2/go/pkg/beam/x/beamx" ) func init() { beam.registerfunction(incrementage) } type user struct { name string age int } func printrow(ctx context.context, list user) { fmt.println(list) } func incrementage(list user) user { list.age++ return list } func main() { flag.parse() beam.init() ctx := context.background() p := beam.newpipeline() s := p.root() var userlist = []user{ {"bob", 40}, {"adam", 50}, {"john", 35}, {"ben", 8}, } initial := beam.createlist(s, userlist) pc := beam.pardo(s, incrementage, initial) pc1 := beam.pardo(s, func(row user, emit func(user)) { emit(row) }, pc) beam.pardo0(s, printrow, pc1) if err := beamx.run(ctx, p); err != nil { log.exitf(ctx, "failed to execute job: %v", err) } }
ログイン後にコピー


正解


ユーザーを起動するには、関数にランチャーを追加する必要があります:

リーリー

現在のコードに書かれているように、

は list.age > 40を返します。list.age > 40最初に true (ブール値) と評価され、そのブール値が返されます。

以上がGo の Apache Beam ParDo フィルターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!