Google Bigtable导出失败,出现java.lang.NoSuchMethodError

时间:2018-05-26 03:21:31

标签: google-cloud-bigtable

我试图使用这个过程: 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版本兼容性问题。我该如何解决?

1 个答案:

答案 0 :(得分:1)

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