Добавить несколько таблиц и файлов в качестве входных данных для задания Hadoop - PullRequest
0 голосов
/ 21 мая 2018

Я ищу способ настроить несколько таблиц и файлов в качестве входных данных для задания hadoop.

Чтобы настроить несколько таблиц в качестве входных данных, мы можем использовать этот API

TableMapReduceUtil.initTableMapperJob(scans, MyMapper.class, Text.class, Text.class, job);

Для добавленияДля ввода файлов на работу мы можем использовать этот API

MultipleInputs.addInputPath(job, path, TextInputFormat.class, myMapper);

Однако их комбинация не работает.Кажется, что первый метод работает исключительно.Я знаю способ добавления 1 hbase таблицы и файлов в качестве входных данных:

conf.set(TableInputFormat.INPUT_TABLE, new String(tableName));
conf.set(TableInputFormat.SCAN, convertScanToString(scan));
MultipleInputs.addInputPath(job, new Path("HT_" + new String(tableName)), TableInputFormat.class, myMapper);
// here we can file inputs as before

Он работает только для 1 ввода таблицы, поскольку имя входной таблицы и сканированиеустановить для конфигурации исключительно.Можем ли мы сделать что-нибудь для поддержки нескольких таблиц и файлов?

1 Ответ

0 голосов
/ 23 мая 2018

Возможно, вы можете попробовать использовать MultiTableInputFormat вместо TableInputFormat, у него есть параметр MultiTableInputFormat.SCANS.Имя таблицы для сканирования установлено в качестве параметра сканирования scan.attributes.table.name.Например,

scan1.setAttribute(`scan.attributes.table.name`, tableName1)
scan2.setAttribute(`scan.attributes.table.name`, tableName2)
conf.setStrings(MultiTableInputFormat.SCANS,
                 convertScanToString(scan1),
                 convertScanToString(scan2));
MultiTableInputFormat.addInputPath(job, new Path("HT_" + new String(tableName)), MultiTableInputFormat.class, myMapper);
...