#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. Я не пробовал это, но это не выглядит невозможным.