내가 JSON 파일에서 데이터를 읽고 파일을 마루에 작성하는 스파크 작업을 쓰고있는 경우 (마루 파일) 기록을 갱신, 아래의 예제 코드입니다 :스파크 이미
DataFrame dataFrame = new DataFrameReader(sqlContext).json(textFile);
dataFrame = dataFrame.withColumn("year", year(to_date(unix_timestamp(dataFrame.col("date"), "YYYY-MM-dd'T'hh:mm:ss.SSS").cast("timestamp"))));
dataFrame = dataFrame.withColumn("month", month(to_date(unix_timestamp(dataFrame.col("date"), "YYYY-MM-dd'T'hh:mm:ss.SSS").cast("timestamp"))));
dataFrame.write().mode(SaveMode.Append).partitionBy("year", "month").parquet("<some_path>");
JSON 파일은 많은 json 레코드로 구성되어 있으며 이미 존재하는 경우 여기 엔 나무 마루로 레코드를 업데이트하려고합니다. Append
모드를 시도했지만 레코드 수준이 아닌 파일 수준에서 작업하는 것으로 보입니다 (즉, 파일이 이미있는 경우, 결국 기록됩니다). 따라서 동일한 파일에 대해이 작업을 실행하면 레코드가 복제됩니다.
데이터 프레임 행 ID를 고유 키로 지정할 수있는 방법이 있습니까? 이미 존재하는 레코드를 업데이트하도록 spark에 요청하십시오. 모든 저장 모드는 파일이 아닌 레코드를 확인하는 것 같습니다.