Я следую этой документации (в частности, Запись в 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.