tutorial que para necesito multinodo instalar español configurar configuracion cluster hadoop hive apache-pig hdfs

necesito - ¿Hay un lugar común para almacenar esquemas de datos en Hadoop?



instalar y configurar hadoop (3)

He estado haciendo una investigación últimamente sobre el uso de Hadoop, Hive y Pig para hacer algo de transformación de datos. Como parte de eso, he notado que el esquema de los archivos de datos no parece estar adjunto a los archivos. Los archivos de datos son solo archivos planos (a menos que se use algo como un SequenceFile). Cada aplicación que desea trabajar con esos archivos tiene su propia forma de representar el esquema de esos archivos.

Por ejemplo, cargo un archivo en el HDFS y deseo transformarlo con Pig. Para trabajar efectivamente con él, necesito especificar el esquema del archivo cuando cargue los datos:

EMP = LOAD ''myfile'' using PigStorage() as { first_name: string, last_name: string, deptno: int};

Ahora, sé que al almacenar un archivo usando PigStorage, el esquema puede escribirse opcionalmente junto a él, pero para poder obtener un archivo en Pig en primer lugar, parece que necesita especificar un esquema.

Si quiero trabajar con el mismo archivo en Hive, necesito crear una tabla y especificar el esquema con eso también:

CREATE EXTERNAL TABLE EMP ( first_name string , last_name string , empno int) LOCATION ''myfile'';

Me parece que esto es extremadamente frágil. Si el formato del archivo cambia ligeramente, entonces el esquema debe actualizarse manualmente en cada aplicación. Estoy seguro de que soy ingenuo, pero ¿no tendría sentido almacenar el esquema con el archivo de datos? De esta manera, los datos son portátiles entre aplicaciones y la barrera para usar otra herramienta sería menor ya que no necesitaría volver a codificar el esquema para cada aplicación.

Entonces la pregunta es: ¿hay alguna manera de especificar el esquema de un archivo de datos en Hadoop / HDFS o necesito especificar el esquema para el archivo de datos en cada aplicación?


Lo que necesitas es HCatalog, que es

"Apache HCatalog es un servicio de gestión de almacenamiento y tablas para datos creados con Apache Hadoop.

Esto incluye:

  • Proporcionar un esquema compartido y mecanismo de tipo de datos.
  • Proporcionar una tabla de abstracción para que los usuarios no tengan que preocuparse de dónde o cómo se almacenan sus datos.
  • Proporcionando interoperabilidad entre herramientas de procesamiento de datos como Pig, Map Reduce y Hive ".

Puede echar un vistazo al "ejemplo de flujo de datos" en los documentos para ver exactamente el escenario del que está hablando


Parece que estás buscando Apache Avro . Con Avro su esquema está integrado en sus datos, por lo que puede leerlo sin tener que preocuparse por los problemas del esquema y hace que la evolución del esquema sea realmente sencilla.

Lo mejor de Avro es que está completamente integrado en Hadoop y puedes usarlo con muchos subproyectos de Hadoop como Pig y Hive.

Por ejemplo, con Pig puedes hacer:

EMP = LOAD ''myfile.avro'' using AvroStorage();

Aconsejaría consultar la documentación de AvroStorage para más detalles.

También puede trabajar con Avro with Hive como se describe aquí, pero no lo he usado personalmente, pero debería funcionar de la misma manera.


Apache Zebra parece ser la herramienta que podría proporcionar una definición de esquema común en mr, pig y colmena. Tiene su propia tienda de esquemas. El trabajo de MR puede usar su TableStore integrado para escribir en HDFS.