0

Google Cloud Data ProcのBigtableからデータを読み取ろうとしています。 以下のコード私はBigdtableからデータを読み取るために使用しています。Googleデータprocでbigtableからデータを読み取る方法

PipelineOptions options = PipelineOptionsFactory.fromArgs(args).create(); 
     options.setRunner(BlockingDataflowPipelineRunner.class); 
     Scan scan = new Scan(); 
     scan.setFilter(new FirstKeyOnlyFilter()); 
     Pipeline p = Pipeline.create(options); 
     p.apply(Read.from(CloudBigtableIO.read(new CloudBigtableScanConfiguration.Builder() 
       .withProjectId("xxxxxxxx").withZoneId("xxxxxxx") 
       .withClusterId("xxxxxx").withTableId("xxxxx").withScan(scan).build()))) 
       .apply(ParDo.named("Reading data from big table").of(new DoFn<Result, Mutation>() { 

        @Override 
        public void processElement(DoFn<Result, Mutation>.ProcessContext arg0) throws Exception { 

         System.out.println("Inside printing"); 
         if (arg0==null) 
         { 
          System.out.println("arg0 is null"); 
         } else 
         { 

          System.out.println("arg0 is not null"); 
          System.out.println(arg0.element()); 
         } 

        } 

       })); 

     p.run(); 

私はエラーの下に取得しています私の方法でarg0.element()を呼び出していますたび。

2017-03-21T12:29:28.884Z: Error: (deec5a839a59cbca): java.lang.ArrayIndexOutOfBoundsException: 12338 
    at org.apache.hadoop.hbase.KeyValue.keyToString(KeyValue.java:1231) 
    at org.apache.hadoop.hbase.KeyValue.keyToString(KeyValue.java:1190) 
    at com.google.bigtable.repackaged.com.google.cloud.hbase.adapters.read.RowCell.toString(RowCell.java:234) 
    at org.apache.hadoop.hbase.client.Result.toString(Result.java:804) 
    at java.lang.String.valueOf(String.java:2994) 
    at java.io.PrintStream.println(PrintStream.java:821) 
    at com.slb.StarterPipeline$2.processElement(StarterPipeline.java:102) 

誰でも私がここで間違っていることを教えてもらえますか?

答えて

1

これは残念ながらknown issueです。私たちは基本的な実装を修正しました。来週にはクライアントの新しいバージョンをリリースしたいと考えています。

System.out.println(Bytes.toStringBinary(arg0.element().getRow());

あなたの悩みのために申し訳ありません

:ような何かに

System.out.println(arg0.element());

:私は、この行を変更することを示唆しています。

関連する問題