gpt4 book ai didi

google-cloud-dataflow - apache beam bigtable 可迭代突变

转载 作者:行者123 更新时间:2023-12-01 12:20:26 24 4
gpt4 key购买 nike

我正在将我的 google dataflow java 1.9 迁移到 beam 2.0,我正在尝试使用 BigtableIO.Write

    ....
.apply("", BigtableIO.write()
.withBigtableOptions(bigtableOptions)
.withTableId("twoSecondVitals"));

在 BigtableIO 之前的 ParDo 中,我正在努力尝试制作 Iterable。

          try{
Mutation mutation = Mutation.parseFrom(new ObjectMapper().writeValueAsBytes(v));
Mutation mu[] = {mutation};
Iterable<Mutation> imu = Arrays.asList(mu);
log.severe("imu");
c.output(KV.of(ByteString.copyFromUtf8(rowKey+"_"+v.getEpoch()), imu));
}catch (Exception e){
log.severe(rowKey+"_"+v.getEpoch()+" error:"+e.getMessage());
}

上面的代码抛出如下异常InvalidProtocolBufferException:协议(protocol)消息结束组标记与预期标记不匹配

v 是对象列表 (Vitals.class)。 hbase api 使用 Put 方法来创建突变。如何创建将与 BigtableIO 接收器一起使用的 BigTable 突变?

最佳答案

通过查看 sdk 的测试,我找到了答案。

            Iterable<Mutation> mutations =
ImmutableList.of(Mutation.newBuilder()
.setSetCell(
Mutation.SetCell.newBuilder()
.setValue(ByteString.copyFrom(new ObjectMapper().writeValueAsBytes(v)))
.setFamilyName("vitals")
).build());

关于google-cloud-dataflow - apache beam bigtable 可迭代突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com