Я использую 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;
}