MapReduce для таблиц Hive с использованием HCatalog

Я пытаюсь написать задание по уменьшению карты, которое вычисляет распределение значений полей в таблице Hive (Hadoop 2.2.0.2.0.6.0-101). Например:

Входная таблица Hive "ATable":

+------+--------+
! name | rating |   |
+------+--------+
| Bond |  7     |
| Megre|  2     |
! Holms|  11    |
| Puaro|  7     |
! Holms|  1     |
| Puaro|  7     |
| Megre|  2     |      
| Puaro|  7     |
+------+--------+

Задание Map-reduce также должно генерировать следующую выходную таблицу в Hive:

+--------+-------+--------+
| Field  | Value |  Count |
+--------+-------+--------+
| name   | Bond  |   1    |
| name   | Puaro |   3    |
| name   | Megre |   2    |
| name   | Holms |   1    |
| rating | 7     |   4    |
| rating | 11    |   1    |
| rating | 1     |   1    |
| rating | 2     |   2    |
+--------+-------+--------+

Чтобы получить имя/значения поля, мне нужно получить доступ к метаданным HCatalog, чтобы я мог использовать их в методе карты (org.apache.hadoop.mapreduce.Mapper). Для этого я пытаюсь принять пример из: http://java.dzone.com/articles/mapreduce-hive-tables-using

Код из этого примера компилируется, но выдает много предупреждений об устаревании:

protected void map(WritableComparable key, HCatRecord value,
 org.apache.hadoop.mapreduce.Mapper.Context context)
 throws IOException, InterruptedException {

 // Get table schema
 HCatSchema schema = HCatBaseInputFormat.getTableSchema(context);

 Integer year = new Integer(value.getString("year", schema));
 Integer month = new Integer(value.getString("month", schema));
 Integer DayofMonth = value.getInteger("dayofmonth", schema);

 context.write(new IntWritable(month), new IntWritable(DayofMonth));
}

Предупреждения об устаревании:

HCatRecord
HCatSchema 
HCatBaseInputFormat.getTableSchema

Где искать аналогичный пример использования HCatalog в map-reduce с последними, не устаревшими интерфейсами?

Спасибо!


person Anton Ashanin    schedule 04.03.2014    source источник


Ответы (1)


Я использовал пример, приведенный в одном из Примеры Cloudera и использовали структуру, приведенную на в этом блоге для компиляции моего кода. Мне также пришлось добавить репозиторий maven для hcatalog в pom.xml. В этом примере используются новые API mapreduce, а не устаревшие mapred. Надеюсь, поможет.

        <dependency>
        <groupId>org.apache.hcatalog</groupId>
        <artifactId>hcatalog-core</artifactId>
        <version>0.11.0</version>
        </dependency>
person Ujjwal Wadhawan    schedule 25.04.2014