【问题标题】:Google Bigtable export fails with java.lang.NoSuchMethodErrorGoogle Bigtable 导出失败并出现 java.lang.NoSuchMethodError
【发布时间】:2018-05-26 03:21:31
【问题描述】:

我正在尝试使用此过程: https://cloud.google.com/bigtable/docs/exporting-sequence-files 导出我的 Bigtable 以进行迁移。

我正在使用 Google Cloud Shell,从 Google Cloud Platform 信息中心开始。 这是 Debian GNU/Linux 9.4 (stretch)。
java -version 报告 openjdk 版本“1.8.0_171”
似乎没有更晚的 jre 可用(即在 apt-get 中)用于拉伸

我这样调用:

java -jar bigtable-beam-import-1.3.0-shaded.jar export \
--runner=dataflow \
--project=xx-may23 \
--bigtableInstanceId=xx0523\
--bigtableTableId=test1 \
--destinationPath=gs://xx0523/test1 \
--tempLocation=gs://xx0523/tmp2 \
--maxNumWorkers=3 \
--zone=us-east4-a

最终,得到这个错误:

ERROR MonitoringUtil$LoggingHandler:101 - 2018-05-26T02:10:55.387Z: 
java.lang.NoSuchMethodError: 
java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
at com.google.cloud.bigtable.beam.sequencefiles.SequenceFileSink$OutputStreamWrapper.write(SequenceFileSink.java:214)
at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:58)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at java.io.FilterOutputStream.write(FilterOutputStream.java:97)
at org.apache.hadoop.io.SequenceFile$Writer.writeFileHeader(SequenceFile.java:1145)
at org.apache.hadoop.io.SequenceFile$Writer.init(SequenceFile.java:1214)
at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:1091)
at org.apache.hadoop.io.SequenceFile$BlockCompressWriter.<init>(SequenceFile.java:1441)
at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:274)
at com.google.cloud.bigtable.beam.sequencefiles.SequenceFileSink$SeqFileWriter.prepareWrite(SequenceFileSink.java:157)
at org.apache.beam.sdk.io.FileBasedSink$Writer.open(FileBasedSink.java:939)
at org.apache.beam.sdk.io.WriteFiles$WriteUnshardedTempFilesWithSpillingFn.processElement(WriteFiles.java:503)

这似乎是java版本兼容性问题。我该如何解决?

【问题讨论】:

  • 在 api 中似乎是谷歌方面的问题。试试这个:curl -f -O http://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-beam-import/1.2.0/bigtable-beam-import-1.2.0-shaded.jar 并继续本教程的其余部分。如果问题解决了,那就是google的问题。如果不是,那么您就是按照说明或参数在某处犯了错误
  • 这很有帮助。使用 Google Cloud Shell,我现在可以使用 jar 文件的 1.1.0 或 1.2.0 版本从 BigTable 导出。版本 1.3.0 始终失败。在 cloud shell 中运行重复测试时,我使用向上箭头键重复上一个命令并仅编辑 jar 文件的版本号以及存储桶上 temp 和 export 文件夹的位置。即,我只进行最小的编辑,以免引入新的错误。 (根据教程说明,temp 和 export 文件夹以前不能存在,所以我只是将每个新测试的数字增加 1。)
  • 使用 v 1.2.0 是我测试的一个很好的解决方法。其他人可能仍想知道如何让 v 1.3.0 在 Cloud Shell 中运行。
  • 很高兴听到它成功了。当我提出建议时,我查阅了 1.2 版,它最后一次编辑是在 2018 年 2 月。所以我认为 1.3 版仍在进行一些更改并且出现了错误。你应该在他们的 git repo 或他们的 jira 上提出这个问题。但很高兴你提出了这个问题,至少他们现在会是存在问题的地方:)

标签: google-cloud-bigtable


【解决方案1】:

我在遵循文档时遇到了完全相同的问题。导航到 maven 存储库,我意识到有一个更新的版本,1.4.0,你可以找到 here。使用文档中给出的命令调用新jar很顺利,任务成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2015-04-13
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2020-03-31
    • 2015-08-01
    相关资源
    最近更新 更多