복붙노트

[SCALA] tar.gz의 압축 여러 파일에 읽기가 불꽃에 보관 [중복]

SCALA

tar.gz의 압축 여러 파일에 읽기가 불꽃에 보관 [중복]

나는 타르로 압축 여러 JSON 파일에서 스파크 RDD를 만들려고 해요. 예를 들어, 나는 3 개 파일이

file1.json
file2.json
file3.json

그리고이는 archive.tar.gz에 포함되어 있습니다.

나는 JSON 파일에서 dataframe을 만들려고합니다. 문제는 스파크가 제대로 JSON 파일에 읽기되지 않는 것입니다. sqlContext.read.json ( "archive.tar.gz") 또는 sc.textFile ( "archive.tar.gz") 왜곡 / 여분의 출력 결과를 이용하여 생성 RDD.

스파크에서 여러 파일을 포함하는 gzip으로 압축 된 아카이브를 처리 할 수있는 방법이 있습니까?

최신 정보

내가 일을 실행 얻을 수있었습니다 스파크에서 압축에서 전체 텍스트 파일을 읽을 수있는 대답에 주어진 방법을 사용하지만,이 방법은 보이지 않는다하면 응용 프로그램 초크 큰 tar.gz의 아카이브 (> 압축 2백메가바이트)에 적합합니다 큰 아카이브 크기가 최대. 문제를 다루는 몇 가지 효과적인 방법이 있다면 압축 후 나는 2기가바이트 개까지 도달 크기 다루고있어 아카이브의 일부로서 궁금하네요.

내가 아카이브를 추출 피하려고이 시간이 많이 걸리는 것 같은 후 함께 파일을 병합하고있다.

해결법

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

    1.해결책은 스파크의 압축에서 읽기 전체 텍스트 파일로 제공됩니다. 제공되는 코드 샘플을 사용하여, 그래서 같은 압축 아카이브에서 dataframe을 만들 수 있었다 :

    해결책은 스파크의 압축에서 읽기 전체 텍스트 파일로 제공됩니다. 제공되는 코드 샘플을 사용하여, 그래서 같은 압축 아카이브에서 dataframe을 만들 수 있었다 :

    val jsonRDD = sc.binaryFiles("gzarchive/*").
                   flatMapValues(x => extractFiles(x).toOption).
                   mapValues(_.map(decode())
    
    val df = sqlContext.read.json(jsonRDD.map(_._2).flatMap(x => x))
    

    이 방법은 비교적 작은 크기의 타르 아카이브에 대한 벌금을 작동하지만 큰 아카이브 크기에 적합하지 않습니다.

    문제에보다 나은 해결책을 읽고이를 점화에서 병렬로 처리 될 수 있으며, 따라서 분열성 하둡 SequenceFiles에 타르 아카이브를 변환하는 것으로 보인다 (타르 아카이브 반대).

    참조 : stuartsierra.com/2008/04/24/a-million-little-files

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

    2.이미 언급 한 바와 같이 내부 *은 .tar.gz 파일의 파일은 압축됩니다. 당신은 tar 아카이브에서 그들을 풀고, 다음 개별적으로 각 파일을 가져 오기, 파일을 압축 해제 처리하는 방법을 알고 (텍스트 만 찾고있다) 가져 오기 기능을 하나의 압축 된 tar 파일에 3 개 개의 파일을 넣어 기대할 수 없다.

    이미 언급 한 바와 같이 내부 *은 .tar.gz 파일의 파일은 압축됩니다. 당신은 tar 아카이브에서 그들을 풀고, 다음 개별적으로 각 파일을 가져 오기, 파일을 압축 해제 처리하는 방법을 알고 (텍스트 만 찾고있다) 가져 오기 기능을 하나의 압축 된 tar 파일에 3 개 개의 파일을 넣어 기대할 수 없다.

    난 당신이 압축 된 데이터를 처리 할 수있는 둘 sc.textfile 및 sqlcontext.read.json 기능 때문에 수동으로 각 개별 JSON 파일을 업로드 할 수있는 시간을 추천 할 것입니다.

  3. from https://stackoverflow.com/questions/38635905/reading-in-multiple-files-compressed-in-tar-gz-archive-into-spark by cc-by-sa and MIT license