Cuando la carga de datos de HDFS la Colmena, usando

LOAD DATA INPATH 'hdfs_file' INTO TABLE tablename;

comando, parece que se está moviendo el hdfs_file a hive/warehouse dir.
Es posible (¿Cómo?) para copiar en lugar de moverlo, en fin, para el archivo, para ser utilizado por otro proceso.

InformationsquelleAutor Suge | 2011-09-27

3 Comentarios

  1. 83

    de su pregunta, debo suponer que usted ya tiene sus datos en hdfs.
    Así que usted no necesita LOAD DATA, que mueve los archivos a la predeterminada de la colmena ubicación /user/hive/warehouse. Usted puede simplemente definir la tabla utilizando la externalpalabra clave, lo que deja los archivos en el lugar, sino que crea la definición de la tabla en la colmena metastore. Ver aquí:
    Crear Tabla de DDL
    ej.:

    create external table table_name (
      id int,
      myfields string
    )
    location '/my/location/in/hdfs';
    

    Por favor, tenga en cuenta que el formato que puede diferir de la de por defecto (como se ha mencionado por JigneshRawal en los comentarios). Usted puede utilizar su propio delimitador, por ejemplo, cuando se usa Sqoop:

    row format delimited fields terminated by ','
    
    • Que la respuesta que yo estaba buscando, muchas gracias!
    • DAG, tengo una pregunta sobre esto. Cuando la Colmena se crea la Tabla de uso «Crear Tabla» Comentarios el Archivo se trasladó desde el HDFS ubicación de la ‘/Usuario/Colmena/almacén/Tabla/’ . Es esta nueva ubicación se encuentra también en HDFS? o es sólo un directorio local. supongo que también debe ser un HDFS ubicación? estoy en lo cierto?
    • Cuando se ejecuta un simple create table los datos no se mueve, y se crea la tabla en HDFS en el directorio del almacén. AFAIK los datos se mueven dentro de HDFS cuando un lugar, pero no external palabra clave se utiliza. (Pero puedo estar equivocado, por favor, vuelva a comprobar usted mismo)
    • He probado el anterior camino de la creación de la tabla usando la palabra clave ‘EXTERNO’, pero por primera vez se crea la tabla con todos los valores NULL. Las siguientes líneas deben agregarse al crear el esquema de la tabla. FORMATO DE FILA CAMPOS DELIMITADOS POR TERMINADO POR ‘,’ . Por favor rectificar si me equivoco.
    • esa es una situación muy específica que no debe ser aplicada a la Dag solución. Usted también no debe ser el uso de la declaración en el esquema de la creación, sino más bien la creación de la tabla externa o administrado
    • Me gustaría considerar la adición de lo que Jignesh ha mencionado, ya que este parece ser el predeterminado el formato de almacenamiento que se utiliza en muchos Sqoop tutoriales. Se podría añadir un extra de advertencia.
    • Gracias por la suggetion +1, he añadido una nota a la respuesta.
    • Impresionante! +1
    • Obtengo el error Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:hdfs://path_to_filename.txt is not a directory or unable to create one). Estoy tratando de cargar el contenido de dicho archivo de texto a la tabla recién creada y sin mover/borrar ese archivo txt.

  2. 5

    He encontrado que, cuando se utiliza la TABLA EXTERNA y la UBICACIÓN juntos, Colmena crea la tabla y, en principio, no hay datos se presente (asumiendo que la ubicación de los datos es diferente de la Colmena ‘UBICACIÓN’).

    Cuando se utiliza ‘CARGA de DATOS INPATH’ comando, los datos se moverán (en lugar de copiar) a partir de los datos de ubicación a ubicación que ha especificado al crear la Colmena de la tabla.

    Si la ubicación no es dado al crear la Colmena de la tabla, se utiliza interna de la Colmena ubicación de almacén de datos y serán movidos de su ubicación de datos de origen a la interna de la Colmena de almacén de datos de ubicación (es decir, /usuario/colmena/almacén/).

  3. 3

    Una alternativa a la «CARGA de DATOS» está disponible en los cuales los datos no se mueve de su ubicación de origen a la colmena de los datos de ubicación de almacén.

    Puede utilizar el comando ALTER TABLE con la UBICACIÓN de la opción. Aquí está por debajo de comando necesario

    ALTER TABLE table_name ADD PARTITION (date_col='2017-02-07') LOCATION 'hdfs/path/to/location/'
    

    La única condición es que aquí, la ubicación debe ser un directorio en lugar del archivo.

    La esperanza de que esto va a resolver el problema.

    • Esto sólo funciona cuando la tabla creada, es una tabla EXTERNA.

Dejar respuesta

Please enter your comment!
Please enter your name here