이 문서에서는 레이크하우스 런타임 카탈로그를 통해 Spark 및 Hive를 BigQuery와 통합할 때 데이터 유형과 스토리지 형식이 어떻게 작동하는지 자세히 설명합니다.
특히 이 문서에서는 다음을 제공합니다.
- 지원되는 스토리지 형식: Hive SerDe 및 Spark 데이터 소스에서 Parquet, ORC, Avro, CSV, JSON과 같은 형식의 호환성 분석입니다.
- 데이터 유형 매핑: Spark와 BigQuery 데이터 유형 간의 정확한 변환 규칙입니다.
이 페이지를 사용하여 엔진 간에 워크로드를 실행하거나 테이블을 쿼리하기 전에 테이블 스키마와 스토리지 형식이 메타스토어와 일치하는지 확인하세요.
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 |
예 |
| 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를 사용하는 경우에만 필요합니다. |