es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Accediendo a Hadoop con Python

Soy nuevo en el campo de la ingeniería de datos y actualmente estoy aprendiendo sobre el sistema de archivos de Hadoop y sus usos. Quiero ejecutar algunos comandos de Hadoop desde mi script de Python para que se ejecuten en secuencia todos los comandos de hdfs. Las tareas que quiero realizar son:

  1. Copiar un archivo desde local a hdfs
  2. Descargar un archivo desde hdfs a local
  3. Leer varios tipos de archivos, como archivos de texto, avro, csv y parquet, almacenados en hdfs.

Quiero que todas estas tareas se realicen desde un script de Python y no escribiendo los comandos respectivos desde la terminal. Por favor, ayúdame y avísame si existe alguna biblioteca o módulo con los que pueda realizar esto.

La versión de Hadoop es 3.2.1 y la versión de Python es 3.8.

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay muchas bibliotecas disponibles para Python que se pueden utilizar para interactuar con el Sistema de Archivos Distribuido de Hadoop (HDFS). Algunas de ellas son:

    1. Hdfs (https://github.com/domdere/hdfs3): Es un cliente HDFS puro en Python que proporciona una interfaz que se asemeja estrechamente a la API estándar de C++. Es compatible con Python 3.
    2. Pydoop (https://github.com/crs4/pydoop): Es una API de Python para MapReduce y HDFS para Hadoop.

    3. Snakebite (https://github.com/spotify/snakebite): También es un cliente HDFS puro en Python que proporciona una forma simple y rápida de interactuar con el Sistema de Archivos Distribuido de Hadoop (HDFS).

    Para realizar las tareas mencionadas, a continuación se muestran los fragmentos de código utilizando el paquete Python ‘hdfs’.

    Copiar un archivo de Local a HDFS

    from hdfs import InsecureClient
    
    client = InsecureClient('http://<servidor-namenode>:<puerto>', user='<nombre-de-usuario-hadoop>')
    client.upload('/ruta/destino/hdfs', '/ruta/archivo/local')
    

    Descargar un archivo de HDFS a Local

    from hdfs import InsecureClient
    
    client = InsecureClient('http://<servidor-namenode>:<puerto>', user='<nombre-de-usuario-hadoop>')
    client.download('/ruta/archivo/hdfs', '/ruta/destino/local')
    

    Leer varios tipos de archivos, como archivos de texto, avro, csv y parquet almacenados en HDFS

    from hdfs import InsecureClient
    
    client = InsecureClient('http://<servidor-namenode>:<puerto>', user='<nombre-de-usuario-hadoop>')
    texto = client.read('/ruta/archivo.txt')
    avro = client.read_avro('/ruta/archivo.avro')
    csv = client.read_csv('/ruta/archivo.csv')
    parquet = client.read_parquet('/ruta/archivo.parquet')
    

    Nota: Reemplace <servidor-namenode> y <puerto> con los valores correspondientes de su clúster de Hadoop, y <nombre-de-usuario-hadoop> con el nombre de usuario con el que desea conectarse a HDFS.

Comments are closed.