Revisión | Muestreo aleatorio de HIVE 2

Review Hive Random Sampling 2

640? Wx_fmt = png

Artículo anterior, uno de los tres mecanismos de muestreo.

Revisión: muestreo aleatorio de colmena de chat 1



Los dos que quedan hoy, Muestreo de barril con Muestreo de bloques de datos



640? Wx_fmt = png




Cuando la cantidad de datos es particularmente grande, el muestreo es particularmente importante cuando es difícil procesar todos los datos. El muestreo puede estimar e inferir las características generales de los datos extraídos. Es un método de trabajo e investigación rentable que se usa comúnmente en experimentos científicos, pruebas de calidad y encuestas sociales.

Hive admite el muestreo de tablas de cubos y el muestreo de bloques, que se estudian por separado a continuación. La denominada tabla de depósito se refiere a la tabla en la que se creó el depósito mediante la cláusula CLUS EXCLUSION BY cuando se creó la tabla. La sintaxis para el muestreo de tablas de depósitos es la siguiente:

|_+_|

La cláusula TABLESAMPLE permite al usuario escribir una consulta para el muestreo de datos en lugar de la tabla completa, que aparece en la cláusula FROM y se puede usar en cualquier tabla. El número de cubo comienza en 1, colname indica la columna de la muestra que se va a extraer, puede ser cualquier columna en la columna no particionada, o rand () se usa para indicar que la muestra se toma en lugar de una sola columna en el fila completa. La fila de depósitos en colname ingresa aleatoriamente 1 ay depósitos y devuelve filas que pertenecen al depósito x. En el siguiente ejemplo, devuelva la fila en el tercero de los 32 depósitos:



|_+_|

Normalmente, TABLESAMPLE escaneará toda la tabla y extraerá muestras, lo que obviamente no es muy eficiente. Como alternativa, dado que la columna del depósito se especifica cuando se usa CLUSTER BY, si la columna especificada en la cláusula TABLESAMPLE coincide con la columna de la cláusula CLUSjected BY, TABLESAMPLE escanea solo las particiones requeridas en la tabla. En el ejemplo anterior, cuando la tabla de origen se creó con CLUSTERBY id INTO 32 BUCKETS, la siguiente declaración devolverá las filas en los clústeres 3 y 19 porque cada depósito es (32/16) = 2 composición de clúster. ¿Por qué es 3 y 19? Porque se devuelve el tercer depósito, y cada depósito está compuesto por los 2 grupos originales, y el tercer depósito está compuesto por los grupos 3 y 19 originales, de acuerdo con el algoritmo griego ha simple (3% 16 = 19% 16).

|_+_|

En cambio, la siguiente declaración devolverá la mitad del tercer clúster porque cada depósito consta de (32/64) = 1/2 clústeres.

|_+_|

El muestreo de bloques se puede utilizar a partir de Hive-0.8. La sintaxis es:

|_+_|

Esta declaración permite que se extraiga al menos el n% del tamaño de los datos (no el número de filas, sino el tamaño de los datos) como entrada. Es compatible con CombineHiveInputFormat y algunos formatos de compresión especiales no se pueden procesar. Si el muestreo falla, la entrada del trabajo MapReduce será la totalidad. mesa. Dado que el muestreo se realiza a nivel de bloque HDFS, la granularidad del muestreo es el tamaño del bloque. Por ejemplo, si el tamaño del bloque es 256 MB, incluso si la entrada n% es solo 100 MB, se obtienen 256 MB de datos. La entrada de 0,1% o más en el ejemplo siguiente se utilizará para la consulta:

|_+_|

Si desea extraer los mismos datos en diferentes bloques, puede cambiar los siguientes parámetros:

|_+_|

También puede especificar la longitud de los datos leídos. Este método tiene las mismas restricciones que la muestra PERCENT. ¿Por qué existe la misma limitación? Esta sintaxis solo cambia el porcentaje a un valor específico, pero no cambia la premisa del muestreo de bloques. La sintaxis es:

|_+_|

Los 100 millones o más ingresados ​​en el siguiente ejemplo se utilizarán para la consulta:

|_+_|

Hive también admite límites de entrada basados ​​en el número de filas, cuando el efecto es diferente de los dos descritos anteriormente. Primero, no se necesita CombineHiveInputFormat, lo que significa que se puede usar en tablas no nativas. El siguiente número de filas se utiliza en cada división. Por lo tanto, el número total de filas varía mucho según el número de divisiones de entrada. La sintaxis es:

|_+_|

Por ejemplo, la siguiente consulta extraerá 10 filas de cada división:

|_+_|

Más conocimiento de big data, habilidades de aprendizaje de big data, ajuste de chispa, código fuente, etc., bienvenido a unirse Planeta del conocimiento

Lectura recomendada:

Una explicación detallada de las restricciones de tipos y genéricos de Scala

Una explicación detallada de las restricciones de tipos y genéricos de Scala

Importante | mr usa hcatalog para leer y escribir tablas de colmena

640? Wx_fmt = jpeg