Lakehouse 런타임 카탈로그를 사용하면 Parquet, ORC, Avro, CSV, JSON, Delta Lake와 같은 스토리지 형식 전반에서 Apache Spark 및 Apache Hive를 BigQuery와 통합할 수 있습니다. 이러한 Hive SerDe 및 Spark 데이터 소스 호환성과 데이터 유형 변환 규칙을 검토하면 교차 엔진 워크로드를 실행하기 전에 테이블 스키마가 Lakehouse 런타임 카탈로그와 일치하는지 확인할 수 있습니다.
Hive와 Spark 간에 지원되는 스토리지 형식
다음 섹션에서는 Hive, Spark, BigQuery 간의 스토리지 형식 및 데이터 소스 호환성을 설명합니다.
세부 스토리지 형식 매핑
BigQuery는 메타데이터의 input_format, output_format, SerDe 라이브러리를 기반으로 테이블의 스토리지 형식을 결정합니다. 다음 표는 이러한 속성을 BigQuery 스토리지 형식에 매핑합니다.
| 입력 형식, 출력 형식, SerDe 라이브러리 | BigQuery 스토리지 형식 |
|---|---|
org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe |
Parquet |
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat org.apache.hadoop.hive.ql.io.orc.OrcSerde |
ORC |
org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat org.apache.hadoop.hive.serde2.avro.AvroSerDe |
Avro |
org.apache.hadoop.mapred.TextInputFormat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat org.apache.hadoop.hive.serde2.OpenCSVSerde |
CSV |
org.apache.hadoop.mapred.TextInputFormat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat org.openx.data.jsonserde.JsonSerDe |
JSON |
org.apache.hadoop.mapred.TextInputFormat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat org.apache.hive.hcatalog.data.JsonSerDe |
JSON |
Hive SerDe 호환성
다음 표는 Hive SerDe 테이블 형식과 BigQuery의 호환성을 보여줍니다.
| 형식 | Spark SQL DDL 구문 | BigQuery에서 쿼리 가능 |
|---|---|---|
| Parquet | CREATE TABLE ... STORED AS PARQUET |
예 |
| ORC | CREATE TABLE ... STORED AS ORC |
예 |
| Avro | CREATE TABLE ... STORED AS AVRO |
예 |
| CSV | CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' |
예 |
| JSON | CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' |
예 |
Spark 데이터 소스 호환성
다음 표는 Spark 데이터 소스 테이블 형식과 BigQuery의 호환성을 보여줍니다.
CSV 및 JSON SerDe 테이블은 BigQuery에서 쿼리할 수 있습니다. 하지만 CSV 및 JSON Spark 데이터 소스 테이블은 쿼리할 수 없습니다.
| 형식 | Spark SQL DDL 구문 | BigQuery에서 쿼리 가능 |
|---|---|---|
| Parquet | CREATE TABLE ... USING PARQUET |
예 |
| ORC | CREATE TABLE ... USING ORC |
예 |
| Avro | CREATE TABLE ... USING AVRO |
예 |
| Delta Lake | CREATE TABLE ... USING DELTA |
예 |
| CSV | CREATE TABLE ... USING CSV |
아니요 |
| JSON | CREATE TABLE ... USING JSON |
아니요 |
Spark에서 BigQuery로 지원되는 데이터 유형
다음 표는 Spark 데이터 유형을 BigQuery 데이터 유형에 매핑합니다.
| Spark 데이터 유형 | BigQuery 데이터 유형 |
|---|---|
BYTE 또는 TINYINT |
INT64 |
SMALLINT 또는 SHORT |
INT64 |
INT 또는 INTEGER |
INT64 |
BIGINT 또는 LONG |
INT64 |
DECIMAL 또는 NUMERIC |
BIGNUMERIC |
FLOAT |
FLOAT64 |
DOUBLE |
FLOAT64 |
REAL |
FLOAT64 |
BOOLEAN |
BOOL |
STRING |
STRING |
VARCHAR |
STRING |
CHAR 또는 CHARACTER |
STRING |
BINARY |
BYTES |
DATE |
DATE |
TIMESTAMP 또는 TIMESTAMP_LTZ |
TIMESTAMP |
ARRAY |
ARRAY |
STRUCT<col_name: type1, ...> |
STRUCT<col_name: type1, ...> |
MAP<key_type, value_type> |
ARRAY<STRUCT<key: key_type, value: value_type>>이 기능을 사용 설정하려면 biglake-help@google.com으로 이메일을 보내세요. 워크로드에서 MAP을 사용하는 경우에만 필요합니다. |