복붙노트

[HADOOP] 마루 파일을 복사하여 CSV로 변환하는 방법

HADOOP

마루 파일을 복사하여 CSV로 변환하는 방법

hdfs 파일 시스템에 액세스 할 수 있으며

hadoop fs -ls /user/foo

이 쪽모이 세공 파일을 로컬 시스템에 복사하고이를 CSV로 변환하여 사용할 수 있습니까? 파일은 행당 여러 필드가있는 간단한 텍스트 파일이어야합니다.

해결법

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

    1.시험

    시험

    var df = spark.read.parquet("/path/to/infile.parquet")
    df.write.csv("/path/to/outfile.csv")
    

    관련 API 문서 :

    /path/to/infile.parquet 및 /path/to/outfile.csv는 hdfs 파일 시스템의 위치에 있어야합니다. hdfs : // ...를 명시 적으로 지정하거나 일반적으로 기본 구성표 인 것처럼 생략 할 수 있습니다.

    로컬 파일은 클러스터의 모든 시스템과 다른 파일을 의미하므로 file : // ...을 사용하지 않아야합니다. 대신 HDFS로 출력 한 다음 명령 행을 사용하여 결과를 로컬 디스크로 전송하십시오.

    hdfs dfs -get /path/to/outfile.csv /path/to/localfile.csv
    

    또는 HDFS에서 직접 표시하십시오.

    hdfs dfs -cat /path/to/outfile.csv
    
  2. ==============================

    2.Hive에 해당 마루 파일에 대해 정의 된 테이블이 있거나 그러한 테이블을 직접 정의한 경우 Hive 쿼리를 실행하고 결과를 CSV 파일로 저장할 수 있습니다. 다음 라인을 따라 무언가를 시도하십시오.

    Hive에 해당 마루 파일에 대해 정의 된 테이블이 있거나 그러한 테이블을 직접 정의한 경우 Hive 쿼리를 실행하고 결과를 CSV 파일로 저장할 수 있습니다. 다음 라인을 따라 무언가를 시도하십시오.

    insert overwrite local directory dirname
      row format delimited fields terminated by ','
      select * from tablename;
    

    dirname과 tablename을 실제 값으로 대체하십시오. 지정된 디렉토리의 기존 내용이 삭제됩니다. 자세한 내용은 쿼리에서 파일 시스템에 데이터 쓰기를 참조하십시오.

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

    3.쪽모이 세공 파일 이름이 무엇인지 정확히 알지 못할 수 있으므로보다 동적 인 양식에 대한 스 니펫은 다음과 같습니다.

    쪽모이 세공 파일 이름이 무엇인지 정확히 알지 못할 수 있으므로보다 동적 인 양식에 대한 스 니펫은 다음과 같습니다.

    for filename in glob.glob("[location_of_parquet_file]/*.snappy.parquet"):
            print filename
            df = sqlContext.read.parquet(filename)
            df.write.csv("[destination]")
            print "csv generated"
    
  4. from https://stackoverflow.com/questions/39419975/how-to-copy-and-convert-parquet-files-to-csv by cc-by-sa and MIT license