AWS Glue에서 ORC 형식 사용 - AWS Glue

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Glue에서 ORC 형식 사용

AWS Glue는 소스에서 데이터를 검색하고 다양한 데이터 형식으로 저장 및 전송되는 대상에 데이터를 씁니다. 데이터가 ORC 데이터 형식으로 저장 또는 전송되는 경우 이 문서에서는 AWS Glue에서 데이터를 사용하는 데 사용할 수 있는 기능을 소개합니다.

AWS Glue는 ORC 형식 사용을 지원합니다. 이 형식은 성능 중심의 열 기반 데이터 형식입니다. 표준 기관의 형식에 대한 소개는 Apache Orc를 참조하세요.

AWS Glue를 사용하여 Amazon S3와 스트리밍 소스에서 ORC 파일을 읽을 수 있을 뿐만 아니라 Amazon S3에 ORC 파일을 쓸 수 있습니다. S3에서 ORC 파일이 포함된 bzipgzip 아카이브를 읽고 쓸 수 있습니다. 이 페이지에서 설명하는 구성 대신 S3 연결 파라미터에서 압축 동작을 구성할 수 있습니다.

다음 표에서는 ORC 형식 옵션을 지원하는 일반적인 AWS Glue 기능을 보여 줍니다.

읽기 쓰기 스트리밍 읽기 작은 파일 그룹화 작업 북마크
지원 지원 지원 지원되지 않음 지원*

* AWS Glue 버전 1.0 이상에서 지원

예: S3에서 ORC 파일 또는 폴더 읽기

사전 조건: 읽으려는 ORC 파일 또는 폴더에 대한 S3 경로(s3path)가 필요합니다.

구성: 함수 옵션에서 format="orc"를 지정합니다. connection_options에서 paths 키를 사용하여 s3path를 지정합니다. connection_options에서 리더와 S3가 상호 작용하는 방식을 구성할 수 있습니다. 자세한 내용은 AWS Glue에서 ETL 관련 연결 유형 및 옵션 참조: Amazon S3 연결 옵션 참조

다음 AWS Glue ETL 스크립트는 S3에서 ORC 파일 또는 폴더를 읽는 프로세스를 보여 줍니다.

Python

이 예에서는 create_dynamic_frame.from_options 메서드를 사용합니다.

from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="s3", connection_options={"paths": ["s3://s3path"]}, format="orc" )

또한 스크립트(pyspark.sql.DataFrame)에서 DataFrame을 사용합니다.

dataFrame = spark.read\ .orc("s3://s3path")
Scala

이 예에서는 getSourceWithFormat 작업을 사용합니다.

import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.GlueContext import org.apache.spark.sql.SparkContext object GlueApp { def main(sysArgs: Array[String]): Unit = { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val dynamicFrame = glueContext.getSourceWithFormat( connectionType="s3", format="orc", options=JsonOptions("""{"paths": ["s3://s3path"]}""") ).getDynamicFrame() } }

또한 스크립트(pyspark.sql.DataFrame)에서 DataFrame을 사용합니다.

val dataFrame = spark.read .orc("s3://s3path")

예: S3에 ORC 파일 및 폴더 쓰기

사전 조건: 초기화된 DataFrame(dataFrame) 또는 DynamicFrame(dynamicFrame)이 필요합니다. 예상되는 S3 출력 경로(s3path)도 필요합니다.

구성: 함수 옵션에서 format="orc"를 지정합니다. 연결 옵션에서 paths 키를 사용하여 s3path를 지정합니다. connection_options에서 라이터가 S3와 상호 작용하는 방식을 추가로 변경할 수 있습니다. 자세한 내용은 AWS Glue: Amazon S3 연결 옵션 참조의 ETL 입력 및 출력에 대한 데이터 형식 옵션을 참조하세요. 다음 코드 예제는 프로세스를 보여 줍니다.

Python

이 예에서는 write_dynamic_frame.from_options 메서드를 사용합니다.

from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="s3", format="orc", connection_options={ "path": "s3://s3path" } )

또한 스크립트(pyspark.sql.DataFrame)에서 DataFrame을 사용합니다.

df.write.orc("s3://s3path/")
Scala

이 예에서는 getSinkWithFormat 메서드를 사용합니다.

import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.{DynamicFrame, GlueContext} import org.apache.spark.SparkContext object GlueApp { def main(sysArgs: Array[String]): Unit = { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) glueContext.getSinkWithFormat( connectionType="s3", options=JsonOptions("""{"path": "s3://s3path"}"""), format="orc" ).writeDynamicFrame(dynamicFrame) } }

또한 스크립트(pyspark.sql.DataFrame)에서 DataFrame을 사용합니다.

df.write.orc("s3://s3path/")

XML 구성 참조

format="orc"을 위한 format_options 값은 없습니다. 그러나 SparkSQL 기초 코드에 의해 수락된 옵션은 connection_options 맵 파라미터를 거쳐 SparkSQL 기초 코드로 넘겨질 수 있습니다.