Совместим ли "bigtable-hbase-beam" с лучевым java SDK 2.5? - PullRequest
0 голосов
/ 06 июля 2018

Я следую этой документации (в частности, Запись в Cloud Bigtable ): https://cloud.google.com/bigtable/docs/hbase-dataflow-java (Я пробую обе версии 1.3.0 и 1.4.0.)

Перед запуском конвейера этот шаг выдает ошибку:

CloudBigtableScanConfiguration config = new CloudBigtableScanConfiguration.Builder()
    .withProjectId("project-id")
    .withInstanceId("instance-id")
    .withTableId("table")
    .build();

(Обратите внимание, что в документации не указано, как создается этот экземпляр config для раздела 'writing', но я попробовал оба вышеупомянутых варианта (скопировано из раздела 'reading', после чего удалена строка '.withScan ()'). а также CloudBigtableTableConfiguration.Builder вместо ScanConfig. Результаты на моем конце те же.)

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/beam/sdk/repackaged/com/google/common/base/Preconditions
        at com.google.cloud.bigtable.beam.CloudBigtableConfiguration.setValue(CloudBigtableConfiguration.java:142)
        at com.google.cloud.bigtable.beam.CloudBigtableConfiguration.<init>(CloudBigtableConfiguration.java:137)
        at com.google.cloud.bigtable.beam.CloudBigtableTableConfiguration.<init>(CloudBigtableTableConfiguration.java:116)
        at com.google.cloud.bigtable.beam.CloudBigtableScanConfiguration.<init>(CloudBigtableScanConfiguration.java:178)
        at com.google.cloud.bigtable.beam.CloudBigtableScanConfiguration$Builder.build(CloudBigtableScanConfiguration.java:160)
        at com.moloco.dataflow2.Main.main(Main.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more

Похоже, что Preconditions не найден. https://github.com/GoogleCloudPlatform/cloud-bigtable-client/blob/c87f8aef59320f240697fb015dbbc7142a2a679f/bigtable-dataflow-parent/bigtable-hbase-beam/src/main/java/com/google/cloud/bigtable/beam/CloudBigtableConfiguration.java#L143

У нас были проблемы с Beam SDK 2.0 / 2.1 / 2.4, поэтому мы пытаемся перейти с 1.9.1 на 2.5, и разъем Bigtable является важной функцией, которую мы часто используем.

С какими Beam SDK (java) bigtable-hbase-beam 1.3.0 совместим, если еще не с 2.5?

Среди прочего мы использовали следующее:

compile group: 'com.google.cloud.bigtable', name: 'bigtable-hbase-beam', version: '1.3.0'
compile 'com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:2.5.0'

Также пробовал compile 'org.apache.beam:beam-runners-google-cloud-dataflow-java:2.5.0', но с той же ошибкой.

Обновление: Дерево зависимостей Gradle предполагает, что для разъема SDK требуется луч 2.3+, поэтому я пробовал 2.3 и 2.4. К сожалению, он конфликтует с другими частями нашего кода, и известная проблема, кажется, блокирует нас ( Сбой DataFlow Runner после обновления до Beam 2.4.0 ). Изначально я спрашивал о версии 1.3.0 (не зная, что 1.4.0 доступна); но я все еще получаю ту же ошибку с hbase-bigtable 1.4.0 и beam sdk 2.5.

1 Ответ

0 голосов
/ 09 июля 2018

Это ошибка в bigtable-hbase-beam. Вот предлагаемое исправление .

...