2015-06-04 2 views
0

Я хочу преобразовать следующий запрос, который находится в vertica для PIG.Что такое замена LPAD SQL в PIG

SQL Query

SUBSTR (LPAD (А, 13»«), 1,1) А.С. A13

(А является переменной VARCHAR)

В PIG нет встроенной функции LPAD. Есть ли способ кодировать это в PIG без написания UDF. Спасибо заранее.

ответ

0

Если вы хотите преобразовать SQL-запрос в задание mapReduce, может быть удобнее переключиться на HIVE, поскольку он поддерживает большинство распространенных SQL-команд.

0

Вы можете быть в состоянии сделать это таким образом:

REGEX_EXTRACT(
    CONCAT('    ', A), 
    '(.{13}$)', 
    1 
); 

Сначала вы суффиксом с 13 пробелами. Во-вторых, вы извлекаете с регулярным выражением последние 13 символов.

Однако, если вы более комфортно с SQL, предпочитайте HIVE.

+0

Требование находится в PIG, хотя в HIVE оно намного проще. Я пробовал вышеуказанную логику, но не работал в соответствии с моим требованием. Предположим, что A = 'X' So в SQL SUBSTR (LPAD (A, 13, ''), 1,1) даст мне NULL и SUBSTR (LPAD (A, 13, ''), 13,1) даст мне «X'.I проверил и не получил то же самое с REGEX_EXTRACT.COuld, что вы мне ведете? – user131990

+0

Если вы хотите изменить размер, вы можете настроить 13 в регулярном выражении, чтобы получить меньше символов. Если regex doe не совпадает, он вернет NULL, чтобы он соответствовал поведению LPAD. – glefait

Смежные вопросы