기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon에서 Hudi를 사용하기 위한 고려 사항 및 제한 사항 EMR
-
레코드 키 필드의 경우 null이거나 비워둘 수 없음 - 레코드 키 필드로 지정하는 필드는
null
이거나 빈 값일 수 없습니다. -
업서트 및 삽입에서 스키마가 기본적으로 업데이트됨 - Hudi는 입력 DataFrame 및 기존 Hudi 데이터 세트가 병합
HoodieRecordPayload
되어 업데이트된 새 데이터 세트를 생성하는 방법을 결정하는 인터페이스를 제공합니다. Hudi는 입력 에 지정된 대로 기존 레코드를 덮어쓰고 스키마를 업데이트OverwriteWithLatestAvroPayload
하는 이 클래스 의 기본 구현을 제공합니다 DataFrame. 병합 및 부분 업데이트 구현을 위해 이 논리를 사용자 지정하려면DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY
파라미터를 사용하여HoodieRecordPayload
인터페이스 구현을 제공할 수 있습니다. -
삭제 시 스키마 필요 - 삭제할 때는 레코드 키, 파티션 키 및 사전 결합 키 필드를 지정해야 합니다. 다른 열은
null
이거나 비워둘 수 있지만 전체 스키마가 필요합니다. -
MoR 테이블 제한 - MoR 테이블은 세이브 포인트 기능을 지원하지 않습니다. Spark SQL, Presto 또는 Hive의 읽기 최적화 뷰 또는 실시간 뷰(
)를 사용하여 MoR 테이블을 쿼리할 수 있습니다. 읽기 최적화 보기를 사용하면 기본 파일 데이터만 노출되고 기본 및 로그 데이터의 병합된 보기는 노출되지 않습니다.tableName
_rt -
Hive
-
테이블을 Hive 메타스토어에 등록하는 경우 Hudi는 Hive Thrift 서버가 기본 포트인
10000
에서 실행될 것으로 예상합니다. 이 포트를 사용자 지정 포트로 재정의하는 경우 다음 예와 같이HIVE_URL_OPT_KEY
옵션을 전달합니다..option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:
override-port-number
-
Spark의
timestamp
데이터 유형은 Hive의long
유형이 아닌 Hive의timestamp
데이터 유형으로 등록됩니다.
-
-
Presto
-
Presto는 0.6.0 미만의 Hudi 버전에서 MoR 실시간 테이블 읽기를 지원하지 않습니다.
-
Presto는 스냅샷 쿼리만 지원합니다.
-
Presto에서 Hudi 데이터 세트 열을 올바르게 해석하려면
hive.parquet_use_column_names
값을true
로 설정합니다.-
세션의 값을 설정하려면 Presto 셸에서 다음 명령을 실행합니다.
set session hive.parquet_use_column_names=true
-
클러스터 수준에서 값을 설정하려면 다음 예와 같이
presto-connector-hive
구성 분류를 사용하여hive.parquet.use_column_names
을(를)true
로 설정합니다. 자세한 내용은 애플리케이션 구성 단원을 참조하십시오.[ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
-
-
-
HBase 인덱스
-
Hudi를 빌드하는 데 사용되는 HBase 버전은 EMR 릴리스 가이드에 나열된 버전과 다를 수 있습니다. Spark 세션에 올바른 종속 항목을 가져오려면 다음 명령을 실행합니다.
spark-shell \ --jars /usr/lib/spark/external/lib/spark-avro.jar,/usr/lib/hudi/cli/lib/*.jar \ --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \ --conf "spark.sql.hive.convertMetastoreParquet=false"
-