2015-06-19 6 views
0

Я застрял, сославшись на хэштеги с HiveQL. Моя проблема: У меня есть эти формат хэштегов в одном ряду:Hive - Hashtag Counting


Мир Юрского периода, кино, ночь, Дино

Мир Юрского периода; книги; yourtickets, фильм

Мир Юрского периода; фильм


Я посмотрел на https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF от Hive, но нет функции, которую я могу выбрать разделитель (;), чтобы разделить эти хэштеги и посчитать их.

мой результат должен быть выглядеть следующим образом:

+---------------+-----------+ 
| Hashtag  | Count  | 
+---------------+-----------+ 
| jurassicworld | 300  | 
| movie   | 200  | 
| night   | 100  | 
| dino   | 250  | 
| book   | 50  | 
| etc...  | 100  | 
+---------------+-----------+ 
+0

Возможный дубликат [Hive: преобразование строки, разделенной запятой, в массив для функции генерации таблицы] (http://stackoverflow.com/questions/13754648/hive-converting-a-comma-separated-string-to-array -for-table-generate-function) http://stackoverflow.com/questions/12160304/hadoop-hive-split-a-single-row-into-multiple-rows – gobrewers14

+0

http://stackoverflow.com/questions/12160304/hadoop-hive-split-a-single-row-into-rows-rows – gobrewers14

ответ

0

Я создал следующий фиктивную таблицу гастронома -

hive> describe deli; 
OK 
row1     string     None 

Я использовал следующий запрос -

select hashTag, count(*) as data from deli LATERAL VIEW explode(split(row1,'\\;')) t1 AS hashTag group by hashTag; 

И, ее подачи я следующий результат для ваших данных-

book 1 
dino 1 
jurassicWorld 2 
jurassicworld 1 
movie 3 
night 1 
yourtickets  1 
+0

Большое спасибо! Все работает отлично :) – Daniel