2015-12-15 64 views
0

我找了很多關於從HBase的火花加載數據的例子中,一個爲我工作是星火批量刪除記錄在HBase的

Configuration config = HBaseConfiguration.create(); 
    config.set(TableInputFormat.INPUT_TABLE, props.getProperty(ConfigConstants.HBASE_SRC_TABLE_NAME)); 
    config.set(TableInputFormat.SCAN_MAXVERSIONS, props.getProperty(ConfigConstants.HBASE_SRC_TABLE_VERSIONS)); 
    config.set(TableInputFormat.SCAN_COLUMN_FAMILY, HbaseConstants.MAPPING_FAMILY); 
    config.set(TableInputFormat.SCAN_TIMERANGE_START, "0"); 
    config.set(TableInputFormat.SCAN_TIMERANGE_END, startTimestamp + "000"); 

    RDD<Tuple2<ImmutableBytesWritable, Result>> tupleRDD = context.newAPIHadoopRDD(config, TableInputFormat.class, 
      ImmutableBytesWritable.class, Result.class); 

但是我真的需要一種方法來刪除的記錄被裝入火花一旦他們被處理。

試圖將tupleRDD映射到JavaPairRDD<ImmutableBytesWritable, Delete>,然後用

JobConf jobConf = new JobConf(config); 
    jobConf.setOutputFormat(org.apache.hadoop.hbase.mapred.TableOutputFormat.class); 
    jobConf.set(TableOutputFormat.OUTPUT_TABLE, props.getProperty(ConfigConstants.HBASE_TARGET_TABLE_NAME)); 
    outputPairsRDD.saveAsHadoopDataset(jobConf); 

但是這給了我像下面

"main" org.apache.hadoop.mapred.InvalidJobConfException: Output directory not set. 

有沒有辦法做到從火花刪除一個例外?

回答

0

事實證明,沒有簡單的方法來做到這一點,我的最終解決方案是通過hbase刪除功能獲取數據並刪除它們,而不是使用hbase的spark-version刪除。