2017-01-19 5 views
1

존재 나는 다음과 같은 방식으로 구성 된 데이터 집합이 있습니다스파크 저장 데이터 집합 partitionby 파일이 이미 오류

Encoder<MyDomain> encoder= Encoders.bean(MyDomain.class); 
Dataset<MyDomain> stdDS = sc.createDataset(filteredRecords.rdd(), encoder); 
Dataset<Row> rowDataset = stdDS.withColumn("idHash", stdDS.col("id").substr(0, 5)); 

나는 다음을 수행하여 출력 데이터 집합을 시도하고있다 :

 rowDataset.write().partitionBy("keep", "idHash").save("test.parquet"); 

을 때 나는 "keep"과 "idHash"둘 다에 의해 파티션이 나옵니다.

File already exists: file:/C:/dev/test.parquet/_temporary/0/_temporary/attempt_201701191219_0001_m_000000_0/keep=true/idHash=0a/part-r-00000-2c2e0494-f6a7-47d7-88e2-f49dffb608d1.snappy.parquet 

여러 파티션을 사용하여 DataSet을 제대로 출력하도록하는 방법은 무엇입니까? 폴더는 비어있어 시작합니다. 또한 로컬 시스템에서이 오류가 발생하면 프로덕션 환경에서이 데이터가 S3로 출력되므로 모든 솔루션이 로컬 파일 시스템과 AWS S3 모두에 대해 작동해야합니다.

감사합니다, 나단

+0

당신이()이'쓰기를 넣어하려고 했나 모드를 시도하거나(). 모드 ("덮어 쓰기") ' ? –

+0

나는 추가를 시도했지만 동일한 오류가 발생 했으므로 출력 데이터가 없기 때문에 두 옵션 중 어느 것도 필요하지 않을 것이라고 생각합니다. –

+0

해결 방법을 찾았습니까? – rohitkulky

답변

0

는`쓰기`("추가").

rowDataset.repartition("keep", "idHash").write().partitionBy("keep", "idHash").save("test.parquet");