簡體   English   中英

流式 pubsub -bigtable 使用 apache 光束數據流 java

[英]Streaming pubsub -bigtable using apache beam dataflow java

嘗試將 pubsub json 消息更新到 bigtable。我正在從本地計算機運行代碼。正在創建數據流作業。但是我沒有看到 bigtable 實例中有任何數據更新,而且它也不會在控制台或數據流作業中引發任何錯誤。我還嘗試具有硬編碼值並嘗試在 bigtable 中更新,但仍然沒有用。 請任何人在這個問題上建議或指導我

 try{
    PipelineOptions options = PipelineOptionsFactory.fromArgs(projectArgs).create();
    options.setRunner(DataflowRunner.class);
    System.out.println("tempfile-" + options.getTempLocation());
    Pipeline p = Pipeline.create(options);
    System.out.println("options" + options.getTempLocation());
    p.apply("Read PubSub Messages", PubsubIO.readStrings().fromTopic(PUBSUB_SUBSCRIPTION))
            .apply(Window.into(FixedWindows.of(Duration.standardMinutes(1))))
            .apply(ParDo.of(new RowGenerator())).apply(CloudBigtableIO.writeToTable(bigtableConfig));

    p.run();
    }catch (Exception e) {
        // TODO: handle exception
        System.out.println(e);
    }
}

@ProcessElement public void processElement(ProcessContext context) {

try {
System.out.println("In for RowGenerator");
String decodedMessageAsJsonString = context.element();
System.out.println("decodedMessageAsJsonString"+decodedMessageAsJsonString);

String rowKey = String.valueOf(
        LocalDateTime.ofInstant(Instant.now(), ZoneId.of("UTC"))
                .toEpochSecond(ZoneOffset.UTC));
System.out.println("rowKey"+rowKey);

Put put = new Put(rowKey.getBytes());
put.addColumn("VALUE".getBytes(), "VALUE".getBytes(), decodedMessageAsJsonString.getBytes());
     // put.addColumn(Bytes.toBytes("IBS"), Bytes.toBytes("name"),Bytes.toBytes("ram"));

context.output(put);
}catch (Throwable e) {
    // TODO: handle exception
    System.out.println(e);
}

}在此處輸入圖片描述

我沒有發現模板的 Bigtable 端有任何問題。 只需確保列族(我假設它是“VALUE”)存在於目標表中。

您確定您正在閱讀正確的 PubSub 訂閱並且有消息被發送到 PubSub。 如果一切正確,則 PubSub 配置中似乎存在一些問題。 也許在問題上添加 PubSub 標簽,pubsub 社區的人可以提供幫助。

暫無
暫無

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

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