Inscreva-se no Google Pub/Sub
Use o conector integrado para assinar o Google Pub/Sub. Esse conector fornece semântica de processamento exatamente uma vez para registros do assinante.
O Pub/Sub poderia publicar linhas duplicadas, ou as linhas poderiam chegar ao assinante fora de ordem. Você deve escrever código para lidar com linhas duplicadas e fora de ordem.
Configurar uma transmissão do Pub/Sub
Os exemplos a seguir demonstram como ler do Pub/Sub e se autenticar com uma credencial de serviço. Para todas as opções de autenticação, consulte Configurar o acesso ao Pub/Sub.
- Python
- Scala
- SQL
query = (spark.readStream
.format("pubsub")
.option("subscriptionId", "mysub")
.option("topicId", "mytopic")
.option("projectId", "myproject")
.option("serviceCredential", "service-credential-name")
.load()
)
val query = spark.readStream
.format("pubsub")
// Creates a Pub/Sub subscription if one does not already exist with this ID
.option("subscriptionId", "mysub")
.option("topicId", "mytopic")
.option("projectId", "myproject")
.option("serviceCredential", "service-credential-name")
.load()
CREATE OR REFRESH STREAMING TABLE pubsub_raw
AS SELECT * FROM STREAM read_pubsub(
subscriptionId => 'mysub',
projectId => 'myproject',
topicId => 'mytopic',
serviceCredential => 'service-credential-name'
);
Para obter mais opções de configuração, consulte Configurar opções para leitura de transmissão Pub/Sub.
Configurar o acesso ao Pub/Sub
Suas credenciais devem ter as seguintes funções:
Papéis | Obrigatório ou opcional | Como o papel é utilizado |
|---|---|---|
| Obrigatório | Verifica se existe inscrição e obtém inscrição. |
| Obrigatório | Busca dados de uma inscrição. |
| Opcional | Permite a criação de uma inscrição caso não exista e permite o uso de |
O Databricks recomenda a configuração de uma credencial de serviço para leituras do Pub/Sub. Credenciais de serviço para Pub/Sub requerem Databricks Runtime 16.1 ou acima. Consulte Criar credenciais de serviço. No entanto, se as credenciais de serviço do Databricks não estiverem disponíveis, você pode usar uma Conta de Serviço do Google (GSA) diretamente. As permissões para o GSA estão disponíveis para todas as queries em execução nesse cluster. Consulte account de serviço do Google.
O senhor não pode anexar um GSA ao site compute configurado com o modo de acesso padrão.
Configure as seguintes opções para usar um GSA com uma transmissão:
clientEmailclientIdprivateKeyprivateKeyId
Entenda o esquema Pub/Sub
O esquema para a transmissão corresponde às linhas que são buscadas do Pub/Sub, conforme descrito na tabela a seguir:
campo | Tipo |
|---|---|
|
|
|
|
|
|
|
|
Configurar opções de leitura de transmissão Pub/Sub
Algumas opções de configuração do Pub/Sub utilizam o conceito de buscas em vez de microlotes . Este é um detalhe de implementação interno, e as opções funcionam de forma semelhante a outros conectores de transmissão estructurada, exceto que as linhas são buscadas e então processadas.
Para a lista completa de opções, consulte Pub/Sub.
Utilize o processamento de lotes incrementais com o Pub/Sub.
Você pode usar Trigger.AvailableNow para consumir linhas disponíveis das fontes Pub/Sub como um lote incremental.
O Databricks registra o carimbo de data/hora ao iniciar uma leitura com a configuração Trigger.AvailableNow. Linhas processadas pelo lote incluem todos os dados previamente buscados e quaisquer linhas recém-publicadas com um timestamp menor que o timestamp inicial registrado. Para obter mais informações, consulte AvailableNow: Processamento de lotes incremental.
Monitore as transmissões do Pub/Sub
As métricas de progresso da Transmissão estructurada relatam o número de linhas buscadas e prontas para processar, o tamanho das linhas buscadas e prontas para processar, e o número de duplicatas vistas desde o início da transmissão.
O seguinte é um exemplo de métricas do Pub/Sub:
"metrics" : {
"numDuplicatesSinceStreamStart" : "1",
"numRecordsReadyToProcess" : "1",
"sizeOfRecordsReadyToProcess" : "8"
}
Limitações
O Pub/Sub não oferece suporte à execução especulativa com spark.speculation.