Pular para o conteúdo principal

Acesso externo a views

info

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:

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 CATALOG e USE SCHEMA nos catálogos pai e esquemas, SELECT na view e em todas as views ou tabelas referenciadas, e EXTERNAL USE SCHEMA nos 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.
Properties
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:

SQL
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.
Properties
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:

SQL
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.