Hay alguna forma de hacer una especie de reverso cosa para explode() en función de Apache Hive.
Digamos que tengo una tabla en este formulario id int, description string, url string, ...

Y a partir de esta tabla me gustaría crear la tabla que se parece a id int, json string donde en json columna almacena todas las demás columnas como json. "description":"blah blah", "url":"http:", ...

InformationsquelleAutor user1831986 | 2013-04-15

2 Comentarios

  1. 9

    Colmena tiene acceso a algunos operaciones de cadena que puede ser utilizado para combinar varias columnas en una sola columna

    SELECT id, CONCAT(CONCAT("(", CONCAT_WS(", ", description, url)), ")") as descriptionAndUrl 
    FROM originalTable
    

    Esta es, obviamente, va a complicar rápidamente por la combinación de muchas columnas en JSON válido. Si este es uno de y usted sabe que todas las cadenas JSON tendrá las mismas propiedades que usted puede conseguir lejos con tan solo CONCAT para sus propósitos.

    La forma «correcta» de hacerlo sería escribir un Función Definida Por El Usuario que toma una lista de columnas y escupe una cadena JSON. Esto será mucho más fácil de mantener si alguna vez necesita agregar columnas o hacer lo mismo con otras tablas.

    Es probable que alguien ya ha escrito uno puede usar, así que usted debe mirar a su alrededor. Por desgracia, el [JSON relacionados con la Udf proporcionada por Colmena]https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-get_json_object) el trabajo de las cadenas JSON, que no los haga.

  2. 1

    Puede concatenar variables de cadena utilizando CONCAT_WS en la Colmena

    SELECCIONE CONCAT_WS(‘-‘,’cadena1′,’cadena2′,’string3’)
    DE LA TABLA

Dejar respuesta

Please enter your comment!
Please enter your name here