Как настроить MultiOutputFormat из HCatalog API в spring-проекте hadoop?

#spring #hadoop #mapreduce #spring-data-hadoop

#весна #hadoop #mapreduce #spring-data-hadoop

Вопрос:

Я разрабатывал приложение hadoop. И теперь я хочу перенести его в проект spring-hadoop. Дело в моей работе mapreduce. Я использовал MultiOutputFormat из HCatalog API, поскольку я хочу хранить информацию в нескольких таблицах. И я не могу найти ни одного примера или документа, в котором говорится, как настроить это в Spring hadoop.

Кто-нибудь может сказать мне, как я могу это сделать, или дать мне несколько справочных материалов? Большое спасибо.

Я разрабатывал приложение hadoop. И теперь я хочу перенести его в проект spring-hadoop. Дело в моей работе mapreduce. Я использовал MultiOutputFormat из HCatalog API, поскольку я хочу хранить информацию в нескольких таблицах. И я не могу найти ни одного примера или документа, в котором говорится, как настроить это в Spring hadoop.

Кто-нибудь может сказать мне, как я могу это сделать, или дать мне несколько справочных материалов? Большое спасибо.

@Thomas Risberg Привет, Томас, спасибо за ответ. Я понимаю, что в spring hadoop нам просто нужно выполнить настройку задания в соответствующем XML-файле. В настоящее время в моем приложении при настройке задания у меня есть код, подобный приведенному ниже:

 ArrayList<OutputJobInfo> tableList = new ArrayList<OutputJobInfo>();
tableList.add(OutputJobInfo.create("database", "request",
partitionValuesRequest));
tableList.add(OutputJobInfo.create("database", "requestdetail",
                partitionValues));
tableList.add(OutputJobInfo.create("database", "jobInfo",
                partitionValues));

List<HCatFieldSchema> requestSchemaList = new ArrayList<HCatFieldSchema>();
requestSchemaList .add(new HCatFieldSchema("type", Type.STRING,
                null));
requestSchemaList .add(new HCatFieldSchema("samplesize",
                Type.INT, null));
requestSchemaList .add(new HCatFieldSchema("userid",
                Type.SMALLINT, null));
configurer.addOutputFormat("request", HCatOutputFormat.class,
                BytesWritable.class, HCatRecord.class);
HCatOutputFormat.setOutput(configurer.getJob("request"),
                tableList.get(0));
HCatOutputFormat.setSchema(configurer.getJob("request"),
                new HCatSchema(requestSchemaList));
......
configurer.configure();
  

Это для меня, чтобы хранить информацию в связанных таблицах внутри редуктора. Итак, мой вопрос заключается в том, как я могу выполнить соответствующую конфигурацию для MultiOutputFormat в Spring-hadoop? Я проверяю spring-hadoop.xsd. Не удается найти какие-либо связанные вкладки для этого.

Комментарии:

1. Фактическое задание MapReduce не изменится, если вы используете spring-data-hadoop. Что изменилось бы, так это то, как задание отправляется с использованием контекста Spring и поддержки заданий для этого. Итак, если вы можете запустить свою работу из командной строки, вы должны иметь возможность запускать то же самое через конфигурацию Spring. Если вы поделитесь тем, что у вас есть на данный момент, мы можем предоставить более подробную информацию.

2. @ThomasRisberg Привет, Томас, спасибо за ответ. Я загружаю более подробную информацию в свой вопрос, можете ли вы взглянуть на него еще раз? Спасибо.

3. У нас вообще нет какой-либо конкретной поддержки HCatalog. Возможно, вы сможете расширить JobFactoryBean и установить OutputFormat на полное имя класса в виде строки. Затем вам нужно будет использовать Hcatalog JobConfigurer для настройки MultiOutputFormat. Я не пробовал это, но это не выглядит невозможным.