Amazon Data Firehose를 사용하여 아파치 아이스버그 테이블로 데이터 전송 - Amazon Data Firehose

Amazon Data Firehose 스트림을 Amazon S3의 Apache Iceberg Table로 전송하는 작업은 미리 보기 중이며 변경될 수 있습니다.

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

Amazon Data Firehose를 사용하여 아파치 아이스버그 테이블로 데이터 전송

참고

Amazon S3의 아파치 아이스버그 테이블로 Firehose 스트림을 전송하는 기능은 프리뷰 중입니다. 프로덕션 워크로드에는 이 기능을 사용하지 마십시오.

Apache Iceberg는 빅데이터 분석을 수행하기 위한 고성능 오픈 소스 테이블 형식입니다. Apache Iceberg는 Amazon S3 데이터 레이크에 SQL 테이블의 안정성과 단순성을 제공하고 Spark, Flink, Trino, Hive 및 Impala와 같은 오픈 소스 분석 엔진이 동일한 데이터를 동시에 사용할 수 있도록 합니다. Apache Iceberg에 대한 자세한 내용은 을 참조하십시오. https://iceberg.apache.org/

Firehose를 사용하여 Amazon S3의 아파치 아이스버그 테이블로 스트리밍 데이터를 직접 전송할 수 있습니다. 이 기능을 사용하면 단일 스트림의 레코드를 여러 Apache Iceberg Table로 라우팅하고 Apache Iceberg Table의 레코드에 삽입, 업데이트 및 삭제 작업을 자동으로 적용할 수 있습니다. 이 기능을 사용하려면 다음을 사용해야 합니다. AWS Glue Data Catalog.

참고

Apache Iceberg Tables는 미국 동부 (버지니아 북부), 미국 서부 (오레곤), 유럽 (아일랜드), 아시아 태평양 (도쿄), 캐나다 (중부) 및 아시아 태평양 (시드니) 에서 사용할 수 있습니다. AWS 리전 미리보기용.

고려 사항 및 제한

프리뷰용 Apache Iceberg 테이블에 대한 Firehose의 지원에는 다음과 같은 고려 사항 및 제한 사항이 있습니다.

  • 처리량PUTDirect를 소스로 사용하여 Apache Iceberg 테이블에 데이터를 전송하는 경우 스트림당 최대 처리량은 미국 동부 (버지니아 북부), 미국 서부 (오레곤), 유럽 (아일랜드) 지역에서 5MiB/초이고 아시아 태평양 (도쿄), 캐나다 (중부) 및 아시아 태평양 (시드니) 지역에서 1MiB/초입니다. 업데이트 및 삭제 없이 Iceberg 테이블에 데이터를 삽입하고 더 높은 스트림 처리량으로 테스트하려는 경우 Firehose Limits 양식을 사용하여 처리량 한도 증가를 요청할 수 있습니다.

  • 열 — 열 이름 및 값의 경우 Firehose는 다단계 중첩에서 첫 번째 수준의 노드만 사용합니다. JSON 예를 들어 Firehose는 위치 필드를 포함하여 첫 번째 레벨에서 사용할 수 있는 노드를 선택합니다. Firehose가 성공적으로 제공되려면 소스 데이터의 열 이름과 데이터 유형이 대상 테이블의 열 이름 및 데이터 유형과 일치해야 합니다. 이 경우 Firehose는 Iceberg 테이블의 구조체 또는 맵 데이터 유형 열이 위치 필드와 일치한다고 예상합니다. Firehose는 16가지 수준의 중첩을 지원합니다. 다음은 중첩의 예입니다. JSON

    { "version":"2016-04-01", "deviceId":"<solution_unique_device_id>", "sensorId":"<device_sensor_id>", "timestamp":"2024-01-11T20:42:45.000Z", "value":"<actual_value>", "position":{ "x":143.595901, "y":476.399628, "z":0.24234876 } }

    열 이름 또는 데이터 유형이 일치하지 않으면 Firehose에서 오류가 발생하고 S3 오류 버킷으로 데이터를 전송합니다. 모든 열 이름과 데이터 유형이 Apache Iceberg 테이블에서 일치하지만 원본 레코드에 새 필드가 추가로 있는 경우 Firehose는 새 필드를 건너뛰습니다.

  • 레코드당 JSON 객체 하나 - Firehose 레코드 하나에 JSON 객체를 하나만 보낼 수 있습니다. 레코드 내에서 여러 JSON 객체를 집계하여 전송하는 경우 Firehose에서 오류가 발생하고 S3 오류 버킷으로 데이터를 전송합니다.

  • 스트리밍 소스 — Firehose는 현재 아파치 아이스버그 테이블의 소스로 Apache Kafka용 아마존 매니지드 스트리밍을 지원하지 않습니다.

  • 압축 — Firehose를 사용하여 작성할 때마다 데이터 파일이 생성됩니다. 수천 개의 작은 데이터 파일이 있으면 메타데이터 오버헤드가 증가하고 읽기 성능이 저하됩니다. 쿼리 성능을 최적화하려면 주기적으로 작은 데이터 파일을 가져와서 더 적은 수의 큰 데이터 파일에 다시 쓰는 솔루션을 고려해 볼 수 있습니다. 이 프로세스를 압축이라고 합니다. AWS Glue Data Catalog Apache Iceberg 테이블의 자동 압축을 지원합니다. 자세한 내용은 의 압축 관리를 참조하십시오. AWS Glue 사용자 가이드. 자세한 내용은 Apache Iceberg 테이블의 자동 압축을 참조하십시오. Apache Iceberg 테이블에서 테이블 유지 관리를 수행하는 VACUUM명령문을 사용하여 스토리지 사용량을 줄임으로써 Iceberg 테이블을 최적화할 수도 있습니다.