Ejemplos del comando de inserción Colmena

Comando de una colmena LMD para explorar es la INSERT comandos. Usted tiene básicamente de tres INSERT variantes- dos de ellos se muestran en la siguiente lista. Para demostrar este nuevo comando DML, va a crear una nueva tabla que contendrá un subconjunto de los datos en el FlightInfo2008 mesa.

(LA) CREATE TABLE IF NOT EXISTS myFlightInfo (año SMALLINT, DontQueryMonth TINYINT, DayOfMonth TINYINT, DayOfWeek TINYINT, DepTime SMALLINT, ArrTime SMALLINT, UniqueCarrier CADENA, FlightNum CADENA, AirTime SMALLINT, ArrDelay SMALLINT, DepDelay SMALLINT, CADENA Origen, Destino CADENA, Cancelado SMALLINT, CancellationCode CADENA) COMENTARIO 'Vuelo InfoTable'PARTITIONED POR (Mes TINYINT) FORMATO FILA DELIMITEDFIELDS terminado por', 'LINES TERMINATED BY' n '(B) Almacena como RCFILETBLPROPERTIES ('creador' = 'Bruce Brown', 'created_at' = 'lun 02 de septiembre 2013 14:24:19 EDT') -(C) INSERT SOBRESCRIBIR TABLA myflightinfoPARTITION (Mes = 1) seleccionar el año, mes, DayOfMonth, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, USO, ArrDelay, DepDelay, Origen, Destino, Cancelado, CancellationCodeFROM FlightInfo2008 DONDE Mes = 1-(D) DESDE FlightInfo2008INSERT EN TABLA myflightinfoPARTITION (Mes = 2) SELECT año, mes, DayOfMonth, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, USO, ArrDelay, DepDelay, Origen, Destino, Cancelado, CancellationCode DONDE Mes = 2... (Meses 3 a 11 omiten por razones de brevedad)INSERT INTO myflightinfoPARTITION TABLA (Mes = 12) SELECT año, mes, DayOfMonth, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, USO, ArrDelay, DepDelay, Origen, Destino, Cancelado, CancellationCode DONDE Mes = 12(E) colmena (FlightData)> VER PARTICIONES myflightinfo-OKmonth = 1 mes = 10 meses = 11 meses = 12 meses = 9 ...(F) $ Ls /home/biadmin/Hive/warehouse/flightdata.db/myflightinfomonth=1 meses = 11 meses = 2 meses = 4 meses = 6 meses = 8 meses = 10 meses = 12 meses = 3 meses = 5 meses = 7 meses = 9(G) $ HIVE_HOME / bin / colmena rcfilecat --service / home / BiAdmin / colmena / almacén / flightdata.db / myflightinfo / mes = 12 / 000000_0 ... 200 812 13 6 655 856 DL 163 885 0 -5 PBI ATL 0200812 13 6 12511446DL 163989 9 11 IAD ATL 0200812 13 6 11101413DL 1641104 -5 7 SAT ATL 0

En el paso (A), se crea esta nueva tabla y se especifica que el formato de archivo se fila columnar (Paso (B)) en lugar de texto. Este formato es más compacto que el texto y, a menudo se comporta mejor, dependiendo de sus patrones de acceso. (Si usted está accediendo a un pequeño subconjunto de columnas en lugar de filas enteras, prueba el Fichero_de_recursos formato.)

El SerDe defecto para Fichero_de_recursos formato es el ColumnarSerDe. Usted puede verificar este hecho mediante la ejecución del DESCRIBE myFlightInfo EXTENDIDA Comando HiveQL desde la interfaz de línea de comandos.

Después de crear la tabla, se utiliza el INSERT SOBRESCRIBIR comando [véase la etapa (C)] para insertar datos a través de una SELECT declaración de la FlightInfo2008 mesa. Tenga en cuenta que usted está particionado sus datos utilizando el PARTICIÓN palabra clave basada en el Mes campo.

Después de que haya terminado, usted tendrá 12 particiones de tabla o directorios reales, bajo la almacén Directorio del sistema de archivos en su máquina virtual, correspondiente a los 12 meses del año. La partición puede mejorar drásticamente el rendimiento de su consulta si desea consultar datos en el myFlightInfo mesa para sólo un determinado mes.

Usted puede ver los resultados de la PARTICIÓN con el enfoque VER PARTICIONES comando en las etapas (E) y (F). Aviso en el paso (D) que está usando una variante de la INSERT comando para insertar datos en varias particiones a la vez. Sólo el mes 2 y 12 se muestra por razones de brevedad, pero meses 3 a 11 tendría la misma sintaxis.

Las particiones son muy útiles para el programador de la colmena. Sin embargo, no es raro encontrar un conjunto de datos donde la partición podría llegar a ser difícil de manejar, especialmente si se especifican varias particiones [PARTITION BY (País CADENA, PersonName CADENA), por ejemplo]. Doce particiones son una cosa - 7 mil millones de particiones sería otra muy distinta!

La solución a la expansión partición es bucketing. Bucketing en Colmena trabaja por lo que le permite especificar un número razonable de cubos, y luego el sistema intenta distribuir uniformemente los datos en el número de cubos que usted especifique. [Eso podría ser algo como PARTITION BY (...) CLUSTERED POR (BucketingColumn) EN x BUCKETS.]

Además, esta característica permite muestreo de mesa - una técnica que permite a los usuarios colmena para escribir consultas sobre una muestra de los datos en lugar de toda la tabla. Muestreo mesa HiveQL puede ser muy útil para el análisis de datos grandes.

También puede utilizar este DE INSERTAR EN tabla1 tabla2 SELECT ... Formato para insertar en varias mesas a la vez. Tu usas INSERT en lugar de SOBRESCRIBIR aquí para mostrar la opción de insertar en lugar de sobrescribir. Hive sólo permite añade, no se inserta, en tablas, por lo que el INSERT palabra clave simplemente instruye Colmena para anexar los datos a la tabla.

Por último, la nota en el paso (G) que usted tiene que utilizar un servicio especial de comandos Hive (rcfilecat) Para ver esta tabla en su almacén, ya que el Fichero_de_recursos formato es un formato binario, a diferencia de la anterior ARCHIVO DE TEXTO ejemplos de formato.

los INSERT Comando DML tiene de tres variantes. La tercera variante es la variante dinámica Inserciones de partición. En el establecimiento, particiona el myFlightInfo tabla en 12 segmentos, 1 por mes. Si tuviera cientos de particiones, esta tarea se habría vuelto muy difícil, y sería el scripting requerido para realizar el trabajo.

En lugar de ello, colmena soporta una técnica para crear dinámicamente las particiones con el INSERT SOBRESCRIBIR comunicado. Así que, si ves que necesitas para aprovechar la partición de tablas con un grande, y posiblemente variables, número de particiones, echa un vistazo a los insertos de particiones dinámicas figurar en el Manual Colmena DML Idioma.




» » » » Ejemplos del comando de inserción Colmena