Red de conocimiento informático - Material del sitio web - Cómo exportar los resultados de la consulta de Hive a un archivo txt

Cómo exportar los resultados de la consulta de Hive a un archivo txt

Cuando uso Hive recientemente, necesito exportar los datos de la consulta de Hive al sistema de archivos local. La sintaxis HQL es la siguiente:

INSERT OVERWRITE [LOCAL] DIRECTORY directorio1 select_statement1

Exportar la consulta. resultados al archivo local, tengo problemas al intentar cargarlo usando Excel: no sé el delimitador que utiliza la colmena al exportar el archivo. Tengo problemas al intentar cargarlo en Excel: no sé qué delimitadores usa Hive al exportar el archivo,

y abrirlo en un editor de texto también muestra galimatías.

Finalmente, busqué en la documentación oficial y descubrí que Hive usa el símbolo ^A como separador de campos, de la siguiente manera:

Los datos escritos en el sistema de archivos se serializan en texto, y cada columna se separa con ^A

En Python, puedes usar line.split('\x01') para dividir, o usar line.split('\001'), ten en cuenta que es una sola quote

En Java, puedes usar split("\u0001") para dividir

Si realmente necesitas exportar la consulta a un archivo local, es mejor usar Hive comando:

[sql] Ver copia simple en CODE para ver fragmentos de código derivados de mi fragmento de código

bin/hive -e "select * from test" >> res.csv< / p>

o:

bin/ hive -f sql.q >> res.csv

El archivo sql.q contiene la consulta que desea ejecutar

También encontrará este problema cuando use la transmisión hql de colmena. Cuando use hql strreaming para escribir la salida directamente en el directorio hdfs, cuando cree una tabla externa de colmena, la salida de colmena se transmitirá El delimitador entre. La clave y el valor se cambian a \001, por lo que cuando se utiliza la transmisión hql para enviar a la tabla externa de Hive, es mejor cambiar el delimitador de la salida final de la transmisión a \001, y el delimitador de la tabla externa de Hive también debe establecerse en \001, nota: no use ^A y \x01, por ejemplo g.

[html]Ver copia simple en CODE para ver fragmentos de código derivados de mi fragmento de código

Crear tabla externa site_user_mapping_info_month(cadena uid, cadena de etiqueta, cadena project_ids, cadena site_interests) PARTICIONADA POR (cadena de año, cadena de mes) FORMATO DE FILA CAMPOS DELIMITADOS TERMINADOS POR ' \001' UBICACIÓN '/project/site_grouping /site_user_mapping_info_month';