AWS Glue ETL 작업에서 JSON 파일을 처리하고 싶습니다.
해결 방법
JSON 파일을 다른 형식으로 변환
JSON 파일을 다른 형식으로 변환하려면 Visual ETL을 사용하여 AWS Glue ETL 작업을 생성합니다. 데이터 소스에서 JSON을 선택합니다. 데이터 대상에서 새 파일 형식을 선택합니다. 데이터 소스 및 데이터 대상의 노드 유형으로 S3를 선택합니다.
JSON 분류자를 생성하여 중첩된 JSON 데이터 읽기
AWS Glue 크롤러가 중첩된 열을 읽어야 하는 경우 JSON 분류자로 정의된 사용자 지정 분류자를 생성합니다. 이후 새 AWS Glue 크롤러를 생성합니다. 새 AWS Glue 크롤러의 분류자 목록에 사용자 지정 JSON 분류자를 추가합니다.
관계화를 사용하여 AWS Glue ETL 작업의 열로 중첩된 JSON 열을 변환할 수 있습니다. AWS Glue ETL 작업 구성의 형식 옵션 값에 JSONPath 옵션을 사용할 수도 있습니다. 코드 예시는 예시: Amazon Simple Storage Service(Amazon S3)에서 JSON 파일 또는 폴더 읽기를 참조하십시오.
unnest 옵션을 사용하여 중첩된 필드를 최상위 개체로 변환합니다.
AWS Glue 크롤러를 사용하여 JSON 배열 구문 분석
기본적으로 AWS Glue 크롤러는 데이터를 단일 배열로 취급합니다. JSON 배열의 각 레코드를 기반으로 하는 스키마를 생성하려면 JSON 사용자 지정 분류자를 생성합니다. JSON 경로에 **$[*]**를 입력합니다.
AWS Glue ETL 작업을 사용하여 JSON 배열을 읽을 때 Apache Spark에서 explode 함수를 사용하여 배열을 행으로 변환하십시오. 자세한 내용은 스파크 웹사이트의 pyspark.sql.functions.explode를 참조하십시오.
Spark에서 to_json 함수를 사용하여 배열을 문자열로 변환할 수도 있습니다. 자세한 내용은 스파크 웹사이트의 pyspark.sql.functions.to_json을 참조하십시오.
데이터 소스의 레코드 수와 일치하지 않는 DynamicFrame 수 문제 해결
DynamicFrame 수가 JSON 데이터 소스의 레코드 수와 일치하지 않는 경우 데이터에 잘못된 형식의 레코드가 포함된 것입니다. 다음 errorsAsDynamicFrame 명령을 실행하여 데이터세트에서 잘못된 형식의 레코드를 찾습니다.
# View error fields and error data
error_record = dynamicframe_df.errorsAsDynamicFrame().toDF().head()
여러 줄이 포함된 JSON 레코드를 읽도록 multiline 값 설정
JSON 레코드가 여러 줄에 걸쳐 있는 경우 AWS Glue ETL 작업 구성의 형식 옵션에서 multiline 값을 true로 설정합니다. 기본적으로 multiline 값은 false로 설정됩니다.