O catálogo do ambiente de execução do Lakehouse permite integrar o Apache Spark e o Apache Hive ao BigQuery em formatos de armazenamento como Parquet, ORC, Avro, CSV, JSON e Delta Lake. A análise dessas compatibilidades do Hive SerDe e da fonte de dados do Spark e das regras de conversão de tipo de dados ajuda a verificar se os esquemas de tabela estão alinhados ao catálogo do ambiente de execução do Lakehouse antes de executar cargas de trabalho entre mecanismos.
Formatos de armazenamento compatíveis entre o Hive e o Spark
As seções a seguir descrevem o formato de armazenamento e a compatibilidade da fonte de dados entre o Hive, o Spark e o BigQuery.
Mapeamento detalhado do formato de armazenamento
O BigQuery determina o formato de armazenamento de uma tabela com base na biblioteca input_format, output_format e SerDe nos metadados. A tabela a seguir mapeia essas propriedades para o formato de armazenamento do BigQuery.
| Formato de entrada, formato de saída e biblioteca SerDe | Formato de armazenamento do 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 |
Compatibilidade do Hive SerDe
A tabela a seguir lista a compatibilidade dos formatos de tabela do Hive SerDe com o BigQuery.
| Formato | Sintaxe DDL do Spark SQL | Pode ser consultado no BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... STORED AS PARQUET |
Sim |
| ORC | CREATE TABLE ... STORED AS ORC |
Sim |
| Avro | CREATE TABLE ... STORED AS AVRO |
Sim |
| CSV | CREATE TABLE ... ROW FORMAT 'org.apache.hadoop.hive.serde2.OpenCSVSerde' |
Sim |
| JSON | CREATE TABLE ... ROW FORMAT 'org.openx.data.jsonserde.JsonSerDe' |
Sim |
Compatibilidade da fonte de dados do Spark
A tabela a seguir lista a compatibilidade dos formatos de tabela da fonte de dados do Spark com o BigQuery.
As tabelas CSV e JSON SerDe podem ser consultadas no BigQuery. No entanto, as tabelas de origem de dados CSV e JSON Spark não podem.
| Formato | Sintaxe DDL do Spark SQL | Pode ser consultado no BigQuery |
|---|---|---|
| Parquet | CREATE TABLE ... USING PARQUET |
Sim |
| ORC | CREATE TABLE ... USING ORC |
Sim |
| Avro | CREATE TABLE ... USING AVRO |
Sim |
| Delta Lake | CREATE TABLE ... USING DELTA |
Sim |
| CSV | CREATE TABLE ... USING CSV |
Não |
| JSON | CREATE TABLE ... USING JSON |
Não |
Tipos de dados compatíveis do Spark com o BigQuery
A tabela a seguir mapeia os tipos de dados do Spark para os tipos de dados do BigQuery.
| Tipo de dados do Spark | Tipo de dados do BigQuery |
|---|---|
BYTE ou TINYINT |
INT64 |
SMALLINT ou SHORT |
INT64 |
INT ou INTEGER |
INT64 |
BIGINT ou LONG |
INT64 |
DECIMAL ou NUMERIC |
BIGNUMERIC |
FLOAT |
FLOAT64 |
DOUBLE |
FLOAT64 |
REAL |
FLOAT64 |
BOOLEAN |
BOOL |
STRING |
STRING |
VARCHAR |
STRING |
CHAR ou CHARACTER |
STRING |
BINARY |
BYTES |
DATE |
DATE |
TIMESTAMP ou 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>>Para ativar esse recurso, envie um e-mail para biglake-help@google.com. Isso só é necessário se as cargas de trabalho usarem MAP. |
A seguir
- Usar o Spark e o Hive com o catálogo do ambiente de execução do Lakehouse.
- Configurar o Spark com tabelas Delta.