it-swarm.com.ru

как заменить персонажей в улье?

У меня есть строковый столбец description в таблице Hive, который может содержать символы табуляции '\t', эти символы, однако, портят некоторые представления при подключении Hive к внешнему приложению. Есть ли простой способ избавиться от всех символов табуляции в этом столбце? Я мог бы запустить простую программу python), но я хочу найти лучшее решение для этого.

22
user1745713

_regexp_replace_ UDF выполняет мою задачу. Ниже приведено определение и использование Apache Wiki.

_regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT):
_

Это возвращает строку, полученную в результате замены всех подстрок в _INITIAL_STRING_, которые соответствуют Java синтаксис регулярного выражения, определенного в PATTERN, экземплярами REPLACEMENT,

например: regexp_replace("foobar", "oo|ar", "") возвращает fb

46
user2637464

Пользовательский SerDe может быть способом сделать это. Или вы можете использовать какой-то процесс посредничества с regex_replace:

create table tableB as 
select 
    columnA
    regexp_replace(description, '\\t', '') as description
from tableA
;
10
ferics2

Вы также можете использовать translate (). Если третий аргумент слишком короткий, соответствующие символы из второго аргумента удаляются. В отличие от regexp_replace () вам не нужно беспокоиться о специальных символах. Исходный код .

https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions

3
iggy
select translate(description,'\\t','') from myTable;

Переводит входную строку, заменяя символы, присутствующие в строке from, соответствующими символами в строке to. Это похоже на функцию перевода в PostgreSQL. Если какой-либо из параметров этого UDF равен NULL, результат также равен NULL. (Доступно с Hive 0.10.0 для типов строк)

Поддержка Char/varchar добавлена ​​в Hive 0.14.0

2
Guest

В данный момент нет функции OOTB), которая позволяет это. Одним из способов достижения этого может быть написание пользовательского InputFormat и/или SerDe, который сделает это за вас. Возможно, этот JIRA полезен: https://issues.Apache.org/jira/browse/Hive-3751 . (хотя не связано напрямую с вашей проблемой).

0
Tariq