Вот пример кода из HBase Book о том, как выполнять чтение задания MapReduce из таблицы HBase.
Configuration config = HBaseConfiguration.create();
Job job = new Job(config, "ExampleRead");
job.setJarByClass(MyReadJob.class); // class that contains mapper
Scan scan = new Scan();
scan.setCaching(500); // 1 is the default in Scan, which will be bad for MapReduce jobs
scan.setCacheBlocks(false); // don't set to true for MR jobs
// set other scan attrs
...
TableMapReduceUtil.initTableMapperJob(
tableName, // input HBase table name
scan, // Scan instance to control CF and attribute selection
MyMapper.class, // mapper
null, // mapper output key
null, // mapper output value
job);
job.setOutputFormatClass(NullOutputFormat.class); // because we aren't emitting anything from mapper
boolean b = job.waitForCompletion(true);
if (!b) {
throw new IOException("error with job!");
}
Когда вы говорите «значение для сканирования», это не настоящая вещь. Вы либо имеете в виду scan.setCaching()
, либо scan.setBatch()
или scan.setMaxResultSize()
.
setCaching
используется, чтобы сообщить серверу, сколько строк для загрузки до возвращения результата клиенту
setBatch
используется, чтобы ограничить количество столбцов, возвращаемых в каждом вызове, если у вас есть очень широкий стол
setMaxResultSize
используются для ограничения количества возвращаемых результатов клиента
Обычно с вами не устанавливайте MaxResultSize
в работе MapReduce. Таким образом, вы увидите все данные.
Ссылка на приведенную выше информацию: here.
Ваш вопрос непонятен. Можете ли вы опубликовать свой код, где вы настраиваете объект сканирования для задания, и уточните свой вопрос, пожалуйста? –
У меня пока нет кода, это больше похоже на вопрос дизайна –