Ler tabelas compartilhadas do OpenSharing usando DataFrames do Apache Spark

Este artigo fornece exemplos de sintaxe de como usar o Apache Spark para consultar dados compartilhados usando o OpenSharing. Use a palavra-chave deltasharing como uma opção de formato para operações do DataFrame.

Outras opções para consulta de dados compartilhados

Você também pode criar consultas que usam nomes de tabela compartilhada em catálogos do OpenSharing registrados no metastore, como aqueles nos seguintes exemplos:

SQL

SELECT * FROM shared_table_name

Python

spark.read.table("shared_table_name")

Para obter mais informações sobre como configurar o OpenSharing em Azure Databricks e consultar dados usando nomes de tabela compartilhados, consulte Ler dados compartilhados usando o Databricks-to-Databricks OpenSharing (para destinatários).

Você pode utilizar o Fluxo Estruturado para processar registros em tabelas compartilhadas de forma incremental. Para usar o Structured Streaming, é necessário habilitar o compartilhamento do histórico da tabela. Consulte ALTER SHARE. O compartilhamento de histórico requer o Databricks Runtime 12.2 LTS ou superior.

Se a tabela compartilhada tiver o feed de dados de alterações habilitado na tabela Delta de origem e o histórico estiver habilitado no compartilhamento, você poderá usar o feed de dados de alterações ao ler um compartilhamento do OpenSharing com streaming estruturado ou operações em lote. Consulte Usar o feed de dados de alteração no Azure Databricks.

Ler usando a palavra-chave do formato OpenSharing

A palavra-chave deltasharing tem suporte para operações de leitura do DataFrame do Spark, conforme mostrado no exemplo a seguir:

df = (spark.read
  .format("deltasharing")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)

Ler o feed de dados de alterações para tabelas compartilhadas do OpenSharing

Para tabelas que têm histórico compartilhado e feed de dados de alterações habilitado, você pode fazer a leitura dos registros do feed de alterações utilizando o DataFrames do Apache Spark. O compartilhamento de histórico requer o Databricks Runtime 12.2 LTS ou superior.

df = (spark.read
  .format("deltasharing")
  .option("readChangeFeed", "true")
  .option("startingTimestamp", "2021-04-21 05:45:46")
  .option("endingTimestamp", "2021-05-21 12:00:00")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)

Ler tabelas compartilhadas do OpenSharing usando o Streaming Estruturado

Para tabelas com histórico compartilhado, você pode usar a tabela compartilhada como fonte para o Structured Streaming. O compartilhamento de histórico requer o Databricks Runtime 12.2 LTS ou superior.

streaming_df = (spark.readStream
  .format("deltasharing")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)

# If CDF is enabled on the source table
streaming_cdf_df = (spark.readStream
  .format("deltasharing")
  .option("readChangeFeed", "true")
  .option("startingTimestamp", "2021-04-21 05:45:46")
  .load("<profile-path>#<share-name>.<schema-name>.<table-name>")
)