【问题标题】:Spark batch delete records on hbaseSpark批量删除hbase上的记录
【发布时间】:2016-02-17 06:51:34
【问题描述】:

我找到了很多关于从 hbase 在 spark 中加载数据的示例,对我有用的是

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

但是,我确实需要一种方法来删除已加载到 spark 中的记录,一旦它们被处理。

尝试将 tupleRDD 映射到 JavaPairRDD&lt;ImmutableBytesWritable, Delete&gt; 然后使用

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.

有没有办法从 spark 中删除?

【问题讨论】:

    标签: apache-spark hbase


    【解决方案1】:

    事实证明没有简单的方法可以做到这一点,我最终的解决方案是通过hbase删除功能而不是hbase的spark-version删除来抓取数据并删除它们。

    【讨论】:

    • 没有提供解决方案
    猜你喜欢
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2015-04-05
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    相关资源
    最近更新 更多