Как создать RowFilter с использованием JavaRDD для выборки строк с соответствующими ключами строк из HBASE - PullRequest
0 голосов
/ 27 сентября 2019

Я использую newAPIHadoopRDD для чтения всех данных из HBase.Это неэффективно, так как я читаю все данные из HBASE.

Как я могу прочитать только совпадающие строки из таблицы HBase, где HBase rowKey совпадает со значением в RDD.

Я не хочу создавать фильтр и помещать в него статическое значение.Я хочу, чтобы значение в RDD использовалось в качестве фильтра для rowKeys в HBASE при чтении, поэтому оно выбирает только совпадающие строки вместо всех данных из таблицы.

Другими словами, я хочу создать фильтр для HBaseтаблица на основе значения в JavaRDD.

public static JavaPairRDD<ImmutableBytesWritable, Result> readFromHBase(JavaSparkContext jsc, String tableName, String columnFamily, String columnName, String hBaseQuorum) {
    Configuration config = createHBaseConfig(hBaseQuorum);

    config.set(TableInputFormat.INPUT_TABLE, tableName);
    config.set(TableInputFormat.SCAN_COLUMN_FAMILY, columnFamily);
    config.set(TableInputFormat.SCAN_COLUMNS, columnFamily + ":" + columnName);

    JavaPairRDD<ImmutableBytesWritable, Result> itemHBaseMapRdd = jsc.newAPIHadoopRDD(config, TableInputFormat.class, ImmutableBytesWritable.class, Result.class);
    return itemHBaseMapRdd;
}
...