복붙노트

[HADOOP] HDFS에서 로컬 파일 시스템으로 Parquet 데이터 수집

HADOOP

HDFS에서 로컬 파일 시스템으로 Parquet 데이터 수집

HDFS에 배포 된 Parquet 데이터 셋 (메타 데이터 파일 + .parquet 파트)을 고려할 때 파트를 올바르게 병합하고 로컬 파일 시스템에 데이터를 수집하는 방법은 무엇입니까? dfs -getmerge ... 작동하지 않습니다-메타 데이터를 실제 마루 파일과 병합합니다.

해결법

  1. ==============================

    1.Apache Spark API와 관련하여 솔루션을 제공하는 방법이 있지만 타사 도구가없는보다 효율적인 방법이있을 수 있습니다.

    Apache Spark API와 관련하여 솔루션을 제공하는 방법이 있지만 타사 도구가없는보다 효율적인 방법이있을 수 있습니다.

    spark> val parquetData = sqlContext.parquetFile("pathToMultipartParquetHDFS")       
    spark> parquet.repartition(1).saveAsParquetFile("pathToSinglePartParquetHDFS")
    
    bash> ../bin/hadoop dfs -get pathToSinglePartParquetHDFS localPath
    

    Spark 1.4부터 DataFrame :: repartition (1) 대신 DataFrame :: coalesce (1)를 사용하는 것이 좋습니다.

  2. ==============================

    2.당신은 돼지를 사용할 수 있습니다

    당신은 돼지를 사용할 수 있습니다

    A = LOAD '/path/to parquet/files' USING parquet.pig.ParquetLoader as (x,y,z) ;
    STORE A INTO 'xyz path' USING PigStorage('|');
    

    임팔라 테이블을 만든 다음 사용할 수 있습니다

    impala-shell -e "query" -o <output>
    

    Mapreduce를 사용할 수도 있습니다

  3. ==============================

    3.쪽모이 세공 도구를 사용할 수 있습니다  java -jar parquet-tools.jar 병합 소스 / 대상 /

    쪽모이 세공 도구를 사용할 수 있습니다  java -jar parquet-tools.jar 병합 소스 / 대상 /

  4. from https://stackoverflow.com/questions/31108123/collecting-parquet-data-from-hdfs-to-local-file-system by cc-by-sa and MIT license