Acesso externo a views
Beta
O acesso externo a views através do catálogo REST do Iceberg está em Beta. O acesso a views através da API REST do Unity está geralmente disponível.
Mecanismos externos podem query views do Unity Catalog usando as seguintes APIs:
- API REST do Unity para views sobre tabelas do Delta Lake.
- Catálogo REST do Iceberg para view sobre tabelas compatíveis com Iceberg.
O mecanismo externo faz a execução do SQL da view e lê as tabelas subjacentes. O leitor deve ter acesso à view e a todas as views ou tabelas referenciadas.
Requisitos
- Habilitar Acesso a dados externos para o metastore. Consulte Habilitar acesso a dados externos ao Unity Catalog.
- Conceda
USE CATALOGeUSE SCHEMAnos catálogos pai e esquemas,SELECTna view e em todas as views ou tabelas referenciadas, eEXTERNAL USE SCHEMAnos esquemas que contêm essas tabelas. - Autentique com um access token pessoal do Databricks ou token OAuth.
- Use SQL de view que seja compatível com o mecanismo externo.
query views do Apache Spark
Versões mínimas para os exemplos do Spark:
- Apache Spark 4.0.
- Para views Delta: conector Spark do Unity Catalog 0.6.0 e Delta Lake 4.3.0.
- Para views Iceberg: Apache Iceberg 1.10.0.
Use nomes de catálogo do Unity Catalog como nomes de catálogo do Spark, incluindo para catálogos referenciados pela view.
Views sobre tabelas Delta
O exemplo a seguir usa a API REST do Unity na AWS. Substituir:
<catalog>com o catálogo do Unity Catalog que contém a view.<workspace-hostname>com o hostname do seu workspace do Databricks.<token>com seu access token.
spark.jars.packages io.unitycatalog:unitycatalog-spark_4.0_2.13:0.6.0,io.delta:delta-spark_4.0_2.13:4.3.0,org.apache.hadoop:hadoop-aws:3.4.1
spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog
spark.sql.catalog.<catalog> io.unitycatalog.spark.UCSingleCatalog
spark.sql.catalog.<catalog>.uri https://<workspace-hostname>
spark.sql.catalog.<catalog>.token <token>
spark.sql.defaultCatalog <catalog>
spark.hadoop.fs.s3.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
Para fazer query da view, substitua <catalog>, <schema> e <view> pelos nomes do seu catálogo, esquema e view e, em seguida, faça a execução do seguinte SQL no Spark:
SELECT * FROM <catalog>.<schema>.<view>;
Views sobre tabelas Iceberg
O exemplo a seguir usa o catálogo REST do Iceberg na AWS. Substituir:
<catalog>com o catálogo do Unity Catalog que contém a view.<workspace-hostname>com o hostname do seu workspace do Databricks.<token>com seu access token.
spark.jars.packages org.apache.iceberg:iceberg-spark-runtime-4.0_2.13:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0
spark.sql.extensions org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark.sql.catalog.<catalog> org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.<catalog>.type rest
spark.sql.catalog.<catalog>.uri https://<workspace-hostname>/api/2.1/unity-catalog/iceberg-rest
spark.sql.catalog.<catalog>.warehouse <catalog>
spark.sql.catalog.<catalog>.token <token>
spark.sql.catalog.<catalog>.io-impl org.apache.iceberg.aws.s3.S3FileIO
spark.sql.catalog.<catalog>.header.X-Iceberg-Access-Delegation vended-credentials
spark.sql.defaultCatalog <catalog>
Para fazer query da view, substitua <catalog>, <schema> e <view> pelos nomes do seu catálogo, esquema e view e, em seguida, faça a execução do seguinte SQL no Spark:
SELECT * FROM <catalog>.<schema>.<view>;
Limitações
- Não há suporte para criação e alteração de views a partir de compute externa.
- O mecanismo externo deve oferecer compatibilidade com definições de view no dialeto Spark SQL. As query que fazem referência à view usam o dialeto SQL do mecanismo externo.
Para acesso ao catálogo REST do Iceberg:
- view com políticas de controle de acesso refinadas, caminhos de resolução personalizados ou funções definidas pelo usuário não são suportadas.
- Versões de views históricas não são suportadas.
- O Spark usa as configurações SQL do leitor. Resultados ou erros podem ser diferentes do Databricks Runtime.