Apache Pig Sintaxis Descripción

Apache Pig es una abstracción de MapReduce. Es una herramienta / plataforma para el análisis de grandes conjuntos de datos, y les expresa como un flujo de datos.

Se utiliza un lenguaje de programación latín de cerdo para escribir el guión, y Colmena tienen algunas similitudes. Aquí para hacer algo simple resumen

1, los datos de carga

A = LOAD 'a.txt' AS (col1:chararray, col2:int, col3:int, col4:int, col5:double, col6:double);

Aquí el archivo de texto se carga en un a.txt donde el archivo contiene 6, en donde

2, los datos almacenados

STORE alias INTO 'directory' USING function;

Utilizar los datos de carga de carga de palabras clave en la relación entre el estudiante

student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' 
   USING PigStorage(',')
   as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

Luego se almacena en las relaciones de directorio HDFS "/ pig_Output /" en

STORE student INTO ' hdfs://localhost:9000/pig_Output/ ' USING PigStorage (',');

3, operador de Apache Pig diagnóstico
Loaddeclaración será simplemente cargar datos en la relación especificada en el cerdo Apache. Para verificar la Loadejecución de la sentencia, se debe utilizar el Diagnosticoperador. Latín de cerdo proporcionan cuatro tipos diferentes de operador de diagnóstico:

  • operador de volcado
  • describir operador
  • explicación del operador
  • Los operadores ilustración

3.1 volcado operadores
de volcado se utiliza principalmente para la depuración, es el resultado directo será impreso a la pantalla.

A = LOAD 'a.txt' AS (col1:chararray, col2:int, col3:int, col4:int, col5:double, col6:double);
DUMP A

DUMP La salida es una tupla

3.2 Describir los operadores
describeoperadores a modo de vista de las relaciones. colmena similar en la descestructura Ver tabla

Describe A

3.3 Explicación de los operadores de
explainoperador se utiliza para mostrar la relación de la MapReduce plan de implementación lógica y física. Del mismo modo en la colmenaexplain

explain A

3.4 operadores Ilustración
ilustran operador prevé la implementación gradual de una serie de declaraciones que casi puede ser interpretado como una barra para ver los resultados.

illustrate Relation_name;

4, el paquete de conexión y
4.1 grupo Operadores de
GROUPoperadores para paquetes de datos en una o más relaciones, que recoge los datos que tienen la misma clave. Cada resultado se emite en forma de tuplas.

-- 按照 age 分组
A = LOAD 'a.txt' AS (age: int, name: chararray, city: chararray);
Group_data = GROUP A BY age;

-- 按照 age 和 city 分组
Group_multiple = GROUP A BY (age, city);

-- 按照所有的列对关系进行分组
Group_all = GROUP A ALL;

group all 输出结果是一个元组 (all ,{(..),(..),...})

4.2 operador Cogroup
COGROUPtrabaja el operador GROUPoperadores de la misma. La única diferencia entre los dos operadores son grouplos operadores a menudo se utilizan en una relación, y cogrouplos operadores de las declaraciones que implican dos o más relaciones.

student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
   as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray); 
employee_details = LOAD 'hdfs://localhost:9000/pig_data/employee_details.txt' USING PigStorage(',')
   as (id:int, name:chararray, age:int, city:chararray);
cogroup_data = COGROUP student_details by age, employee_details by age;

-- cogroup 有点像hive里的full outer join的感觉,两个文件按照age分组,
-- 如果某个文件里其中一个age的值没有,那么会在结果里用 {} 补齐

4.3 tratan de lograr la diferencia de conjuntos con Cogroup
diferenciación conjunto con una combinación izquierda en general, se dan cuenta de la colmena, donde, por ejemplo TABLE_A y table_b en un solo campo id, pero ahora no quieren saber dónde está el id en table_b en TABLE_A

-- hive 实现
select
a.id 
from (
	select 
	id 
	from table_a
) a
left join (
	select
	id
	from table_b
) b
on a.id=b.id
where b.id is NULL

Mira cómo lograr algunos de los cerdos

A = LOAD 'table_a' USING PigStorage('\t') AS (id: chararray);
B = LOAD 'table_b' USING PigStorage('\t') AS (id: chararray);

C = COGROUP A BY id, B BY id;
D = FILTER(A) IsEmpty(B);
E = FOREACH D GENERATE FLATTEN(A);
E = FOREACH E GENERATE A::id as id;
 

5, operador de combinación

  • Autocombinación
  • Unir internamente
  • Combinación externa - a la izquierda unirse, se unen a la derecha, y la unión completa

Autocombinación y 5.1 Unión interna
autocombinación y Unión interna sintaxis es la misma, pero autocombinación es su propia asociación, para definir la relación cuando los mismos datos loada dos relación diferente

Relation3_name = JOIN Relation1_name BY key, Relation2_name BY key ;

5.2 de combinación externa
类比unen于colmena里的izquierda unirse a, unirse a la derecha, externa completa

Unión externa izquierda (conexión externa izquierda)
externa izquierda dejó el operador de combinación devuelve todas las filas en la tabla, incluso si la relación entre el derecho no hay ninguna coincidencia.
La sintaxis es la siguiente:

Relation3_name = JOIN Relation1_name BY id LEFT OUTER, Relation2_name BY customer_id;

Derecho combinación externa (externa derecha)
exterior derecho del operador de combinación devuelve todas las filas de la tabla de la derecha, incluso si no hay una entrada coincidente dejado en la mesa.

La sintaxis es la siguiente:

Relation3_name = JOIN Relation1_name BY id RIGHT, Relation2_name BY customer_id;

Completa combinación externa (conexión externa completa)
cuando existe una coincidencia de una relación, externa completa rendimientos de operación en Aceptar.

La sintaxis es la siguiente:

Relation3_name = JOIN Relation1_name BY id FULL OUTER, Relation2_name BY customer_id;

6, los operadores transversales
CROSSoperador calcula el producto vectorial de dos o más relaciones. En este capítulo se utiliza en el ejemplo muestra cómo el latín de cerdo crossoperador.
Se apreciará para calcular el producto cartesiano

La sintaxis es la siguiente:

cross_data = CROSS customers, orders;

7, operador de unión
cerdo América del UNIONcontenido del operador para la relación entre los dos combinados. Para llevar a cabo sobre la relación entre las dos UNIONoperaciones, sus columnas y los campos deben ser idénticos.

La sintaxis es la siguiente:

Relation_name3 = UNION Relation_name1, Relation_name2;

8, operadores de división
SPLIToperador se utiliza para dividir en dos o más relaciones Relación

La sintaxis es la siguiente:

SPLIT Relation_name INTO Relation1_name IF (condition1), Relation2_name (condition2);

9, operadores de filtro
FILTERoperador se utiliza para seleccionar la tupla deseado a partir de la relación de acuerdo con las condiciones.

La sintaxis es la siguiente:

Relation2_name = FILTER Relation1_name BY (condition);

filter_data = FILTER student_details BY city == 'Chennai';

10, distinto operadores
DISTINCToperador para borrar redundante tupla (duplicado) de la relación.

La sintaxis es la siguiente:

distinct_data = DISTINCT student_details;
Publicados 114 artículos originales · ganado elogios 55 · Vistas a 80000 +

Supongo que te gusta

Origin blog.csdn.net/zuolixiangfisher/article/details/90237565
Recomendado
Clasificación