tipos funciones datos dato data consultas cadena hadoop hive

hadoop - funciones - ¿Hive tiene una función de división de cadenas?



tipos de dato en hive (3)

Estoy buscando una función de división de cadenas incorporada en Hive? Por ejemplo, si String es

A | B | C | D | E

entonces quiero tener una función como array split (string input, char delimitador)

para que regrese [A, B, C, D, E].

¿Existe una función dividida integrada en Hive? Solo puedo ver regexp_extract y regexp_replace. Me encantaría ver las funciones de cadena indexOf () y split ().

Gracias

Ajay


Existe una función dividida basada en expresiones regulares. No aparece en el tutorial , pero aparece en el manual del idioma en la wiki :

split(string str, string pat) Split str around pat (pat is a regular expression)

En su caso, el delimitador " | " tiene un significado especial como expresión regular, por lo que debe denominarse " //| ".


Otro caso de uso interesante para dividir en Hive es cuando, por ejemplo, una columna ipname en la tabla tiene un valor "abc11.def.ghft.com" y desea sacar "abc11":

SELECT split(ipname,''[/.]'')[0] FROM tablename;


Solo una aclaración sobre la respuesta dada por Bkkbrad.

Intenté esta sugerencia y no funcionó para mí.

Por ejemplo,

split(''aa|bb'',''//|'')

producido:

["","a","a","|","b","b",""]

Pero,

split(''aa|bb'',''[|]'')

produjo el resultado deseado:

["aa","bb"]

Incluyendo el metacarácter ''|'' dentro de los corchetes hace que se interprete literalmente, como se pretende, en lugar de como un metacarácter.

Para la elaboración de este comportamiento de regexp, consulte: http://www.regular-expressions.info/charclass.html