【发布时间】: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 上提出这个问题。但很高兴你提出了这个问题,至少他们现在会是存在问题的地方:)