首页 > 解决方案 > Apache Beam - CassandraIO 写入异步 - 2.6.0 错误

问题描述

我正在使用 apache Beam 的以下库来运行数据流作业以从 BigQuery 读取数据并将数据存储/写入 Cassandra。

  1. 梁-sdks-java-io-cassandra - 2.6.0
  2. 梁-sdks-java-io-jdbc - 2.6.0
  3. 梁-sdks-java-io-google-cloud-platform - 2.6.0
  4. 梁-sdks-java-core - 2.6.0
  5. google-cloud-dataflow-java-sdk-all-2.5.0
  6. 谷歌 api 客户端 -1.25.0

由于 beam-sdks-java-io-cassandra > 2.3 版本支持 saveAsync,我已将所有库升级到 2.6.0。

库更新后,在将数据插入/保存到 Cassandra 时出现以下错误。

java.lang.NoSuchMethodError: com.datastax.driver.mapping.Mapper.saveAsync(Ljava/lang/Object;)Lorg/apache/beam/repackaged/beam_sdks_java_io_cassandra/com/google/common/util/concurrent/ListenableFuture;
    at org.apache.beam.sdk.io.cassandra.CassandraServiceImpl$WriterImpl.write(CassandraServiceImpl.java:435)
    at org.apache.beam.sdk.io.cassandra.CassandraIO$WriteFn.processElement(CassandraIO.java:493)

看起来这是来自 Gauva 和 Cassandra Driver 的 ListenableFuture 问题。

标签: google-cloud-dataflowapache-beam

解决方案


我有一个解决方法。使用 beam-sdks-java-io-cassandra - 2.4.0。我正在努力解决这个问题,包括。其他一些东西……会在这里更新。

更新:很可能发现了问题。将修复推送到我自己的 fork。但是,可能需要一些时间才能将其制成 PR 并由 Beam 的人发布......如果有人想使用我构建的版本 - 你可以看看它是如何完成的


推荐阅读