0

Google 클라우드 데이터 proc에서 Bigtable의 데이터를 읽지 않습니다. 아래 코드는 Bigdtable에서 데이터를 읽는 데 사용하고 있습니다. 내가 arg0.element를 호출하고 때마다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(); 

는 (내 방법) 내가 오류 아래 얻고있다.

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());

과 같이합니다.

관련 문제