2
S3에서 yyyy/mm/dd/hh로 파티션 된 많은 수의 이벤트가 있습니다. 모든 파티션에는 약 80,000 개의 원시 텍스트 파일이 있습니다. 모든 원시 파일에는 JSON 형식의 약 1.000 이벤트가 있습니다.여러 원시 파일을 하나의 마루 파일로 결합하십시오.
datasource0 = glueContext.create_dynamic_frame.from_catalog(database=from_database,
table_name=from_table,
transformation_ctx="datasource0")
map0 = Map.apply(frame=datasource0, f=extract_data)
applymapping1 = ApplyMapping.apply(......)
applymapping1.toDF().write.mode('append').parquet(output_bucket, partitionBy=['year', 'month', 'day', 'hour'])
내가 좋아하는 이름 파티션에 작은 파일의 큰 숫자와 끝까지 : 내 변환 할 스크립트를 실행하면
part-00000-a5aa817d-482c-47d0-b804-81d793d3ac88.snappy.parquet
part-00001-a5aa817d-482c-47d0-b804-81d793d3ac88.snappy.parquet
part-00002-a5aa817d-482c-47d0-b804-81d793d3ac88.snappy.parquet
그들 각각의 1-3킬로바이트입니다 크기가. 번호는 내가 가진 원시 파일의 수와 대략 일치합니다.
접착제에서 카탈로그의 모든 이벤트를 가져 와서 원하는대로 파티션하고 을 하나의 파일에 하나의 파일에 저장하는 것이 인상적이었습니다..
어떻게 달성 할 수 있습니까?
고마워요! 약간의 독서 후 나는 * 합병 *이 아마도 더 적절하다고 생각하고있다. 이견있는 사람? –
coalesce (1) 및 repartition (1)은 전체 데이터가 하나의 파티션에서 전송되어야하므로 기능이 동일하므로 셔플이 있어야하며 두 작업 모두 동일합니다. –