[SCALA] tar.gz의 압축 여러 파일에 읽기가 불꽃에 보관 [중복]
SCALAtar.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.해결책은 스파크의 압축에서 읽기 전체 텍스트 파일로 제공됩니다. 제공되는 코드 샘플을 사용하여, 그래서 같은 압축 아카이브에서 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.이미 언급 한 바와 같이 내부 *은 .tar.gz 파일의 파일은 압축됩니다. 당신은 tar 아카이브에서 그들을 풀고, 다음 개별적으로 각 파일을 가져 오기, 파일을 압축 해제 처리하는 방법을 알고 (텍스트 만 찾고있다) 가져 오기 기능을 하나의 압축 된 tar 파일에 3 개 개의 파일을 넣어 기대할 수 없다.
이미 언급 한 바와 같이 내부 *은 .tar.gz 파일의 파일은 압축됩니다. 당신은 tar 아카이브에서 그들을 풀고, 다음 개별적으로 각 파일을 가져 오기, 파일을 압축 해제 처리하는 방법을 알고 (텍스트 만 찾고있다) 가져 오기 기능을 하나의 압축 된 tar 파일에 3 개 개의 파일을 넣어 기대할 수 없다.
난 당신이 압축 된 데이터를 처리 할 수있는 둘 sc.textfile 및 sqlcontext.read.json 기능 때문에 수동으로 각 개별 JSON 파일을 업로드 할 수있는 시간을 추천 할 것입니다.
from https://stackoverflow.com/questions/38635905/reading-in-multiple-files-compressed-in-tar-gz-archive-into-spark by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 병합은 전체 스테이지의 평행도를 감소 (스파크) (0) | 2019.11.13 |
---|---|
[SCALA] 스칼라 F-경계 유형 설명 (0) | 2019.11.13 |
[SCALA] 스칼라 : 왜 Seq.contains는이 모든 인수 대신 시퀀스 유형의 인수를 걸립니까? (0) | 2019.11.13 |
[SCALA] 스칼라의 지능과 정수의 차이점은 무엇입니까? (0) | 2019.11.13 |
[SCALA] 스칼라에서 피보나치 함수를 작성하는 가장 빠른 방법은 무엇입니까? (0) | 2019.11.12 |