оператор «substr» в apache pig

#hadoop #apache-pig #substr

#hadoop #apache-pig #substr

Вопрос:

У меня ниже структура пользовательских данных в apache hadoop

 21796346,83637,2990666,1,2,false,0,0
21827841,15748,8754621,1,7,true,0,1
  

Первые 4 цифры 1-го поля представляют тип пользователя.
2-е поле представляет тип отдела.

Я хотел бы запросить количество типов пользователей в каждом отделе. Инструкция SQL приведена ниже

 select dept_id, substr(User_Id,1,4) as user_type, count(*) as number_of_users from users group by dept_id,substr(User_Id,1,4)
  

Я не мог понять, как определить функцию substr в pig.

Ответ №1:

Вы могли бы использовать ПОДСТРОКУ в PIG

 A = LOAD 'DATA' USING PigStorage(';') AS (User_Id, var1, var2, var3, var4, var5, var6, var7); 
B = GROUP A By SUBSTRING(User_Id,1,4);
C = FOREACH B GENERATE group as user_typeX, COUNT(A) as number_of_users_with_the_same_user_typeX;
  

Чтобы получить количество всех пользователей, которые вы могли бы СГРУППИРОВАТЬ ПО ВСЕМ.

Ответ №2:

Вы можете найти полный список встроенных функций Pig здесь. Вызывается функция, которую вы ищете SUBSTRING . Обратите внимание, что имена функций в Pig чувствительны к регистру.