簡體   English   中英

Google DataFlow Apache Beam

[英]Google DataFlow Apache Beam

我試圖使用Apache Beam創建一個Dataflow管道,我無法按照文檔,找不到任何示例。

管道很簡單。

  1. 創建一個管道
  2. 閱讀pub / sub主題
  3. 寫入扳手。

目前,我陷入了第2步。我找不到任何關於如何從pub / sub讀取並使用它的示例。

這是我到目前為止所希望的代碼

class ExtractFlowInfoFn extends DoFn<PubsubMessage, KV<String, String>> {
    public void processElement(ProcessContext c) {
        KV.of("key", "value");
    }
}

public static void main(String[] args) {

    Pipeline p = Pipeline.create(
    PipelineOptionsFactory.fromArgs(args).withValidation().create());

    p.apply("ReadFromPubSub", PubsubIO.readMessages().fromSubscription("test"))
     .apply("ConvertToKeyValuePair", ParDo.of(new ExtractFlowInfoFn()))
     .apply("WriteToLog", ));
};

我通過以下幾個例子來提出代碼。 說實話,我不知道我在這做什么。

請幫助我理解這一點或將我鏈接到正確的文檔。

從Pub / Sub中提取消息並寫入Cloud Spanner的示例:

import com.google.cloud.spanner.Mutation;
import org.apache.beam.sdk.io.gcp.spanner.SpannerIO;
import org.apache.beam.sdk.transforms.DoFn.ProcessElement;

class MessageToMutationDoFn extends DoFn<PubsubMessage, Mutation> {

    @ProcessElement
    public void processElement(ProcessContext c) {

        // TODO: create Mutation object from PubsubMessage

        Mutation mutation = Mutation.newInsertBuilder("users_backup2")
            .set("column_1").to("value_1")
            .set("column_2").to("value_2")
            .set("column_3").to("value_3")
            .build();

        c.output(mutation);
    }
}

public static void main(String[] args) {

    Pipeline p = Pipeline.create();

    p.apply("ReadFromPubSub", PubsubIO.readMessages().fromSubscription("test"))
     .apply("MessageToMutation", ParDo.of(new MessageToMutationDoFn()))
     .apply("WriteToSpanner", SpannerIO.write()
         .withProjectId("projectId")
         .withInstanceId("spannerInstanceId")
         .withDatabaseId("spannerDatabaseId"));

    p.run();
}

參考: Apache Beam SpannerIOApache Beam PubsubIO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM