2017-05-21 1 views
0

나는 데이터 프레임 자바에서 이런 식으로 저장하면 ... : 다수의 파일과hadoopish 폴더에서 마루 파일을로드하는 방법

df.write().parquet("myTest.parquet"); 

..., 다음은 hadoopish 방법에 저장됩니다 (폴더).

데이터 프레임을 단일 파일로 저장할 수 있습니까? collect()을 시도했지만 도움이되지 않습니다.

load_df = sqlContext.read.parquet("myTest.parquet").where('field1="aaa"').select('field2', 'field3').coalesce(64) 

답변

1

스파크 수많은에서, 디렉토리에이 파일을 파일을 기록 파이썬의 방법은

저장 및 parquet 또는 json 또는 어떤 형식으로 당신이 원하는 당신의 파일을 읽을은 간단하다 :

df.write.parquet("path") 
loaddf = spark.read.parquet("path") 
,

나는 collect()를 시도했지만 도움이되지 않습니다.

, 그것은 드라이버에 데이터를 반환하기 때문에 당신이 병렬 계산 혜택을 상실 있도록 이러한 작업에서 사용하는 것이 좋습니다가 아닌 대한 collect을 이야기하고 그것이 OutOfMemoryException가 발생할 경우 데이터가 없습니다 메모리에 맞춰야합니다.

데이터 프레임을 단일 파일로 저장할 수 있습니까?

당신은 정말 최고 감사

, 그것은

는 희망이 도움이 저장하기 전에 중요한 경우에, 만약 그렇다면, 당신의 Dataframerepartition(1) 방법을 사용하는 것이 수행 할 필요가 없습니다

1

이 하나의 파일로 데이터 프레임을 저장 할 수 있습니다 : 그것은 불가능하면

, 그럼 내 질문에 내가 df.write().parquet("myTest.parquet") 만든 hadoopish 폴더에서 마루 파일을 읽기 위해 파이썬 코드를 변경하는 방법입니다 ?

네,하지만 당신은 성능 저하뿐만 아니라 JVM 종료 따라서 전체 스파크 응용 프로그램 오류에뿐만 아니라 이어질 수있는 하나의 JVM에 너무 많은 압력을 넣을 수 있습니다하지 말아야한다.

그래서, 네, 가능하면 repartition(1) 단일 파티션 가지고해야합니다

재분할 (numPartitions : INT) : 데이터 집합 [T] 정확히 numPartitions 파티션을 가진 새 데이터 집합을 반환을. 나는 당신이 "hadoopish"폴더로 걱정하지 않는 것입니다 그것을 전화로에서 데이터 집합을로드 hadoopish 폴더

에서 마루 파일을 읽기 위해 파이썬 코드를 변경하는 방법을


내부 구조는 전혀 없으며 하나의 파일 (커버 아래에있는 디렉토리)으로 간주합니다.

이는 파일 저장 방법에 대한 내부 표현이며 코드를로드하는 데 영향을주지 않습니다. 당신이 말하는 및 기록 동작의 성공한다면 내가 스칼라에서 오는거야하지만 비슷한이 있다고 믿는다라는 또 다른 빈 파일 _SUCCESS

을 절약 할

관련 문제