Modelo do Spanner para o BigQuery

O modelo do Spanner para BigQuery é um pipeline em lote que lê dados de uma tabela do Spanner e os grava no BigQuery.

Requisitos de pipeline

  • A tabela de entrada do Spanner precisa existir antes da execução do pipeline.
  • O conjunto de dados do BigQuery precisa existir antes da execução do pipeline.
  • Um arquivo JSON que descreve o esquema do BigQuery.

    O arquivo precisa conter uma matriz JSON de nível superior chamada fields. O conteúdo da matriz fields precisa usar o seguinte padrão:
    {"name": "COLUMN_NAME", "type": "DATA_TYPE"}.

    Veja no JSON a seguir um exemplo de esquema do BigQuery:

    {
      "fields": [
        {
          "name": "location",
          "type": "STRING"
        },
        {
          "name": "name",
          "type": "STRING"
        },
        {
          "name": "age",
          "type": "STRING"
        },
        {
          "name": "color",
          "type": "STRING"
        },
        {
          "name": "coffee",
          "type": "STRING"
        }
      ]
    }

    O modelo de lote do Spanner para BigQuery não dá suporte à importação de dados para os campos STRUCT (registro) na tabela de destino do BigQuery.

Parâmetros do modelo

Parâmetros obrigatórios

  • spannerInstanceId: o ID da instância do banco de dados do Spanner que será usado para as leituras.
  • spannerDatabaseId: o ID do banco de dados do Spanner a ser exportado.
  • outputTableSpec: o local da tabela de saída do BigQuery em que a saída será gravada. Por exemplo, <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.Dependendo do createDisposition especificado, a tabela de saída pode ser criada automaticamente usando o esquema do Avro fornecido pelo usuário.

Parâmetros opcionais

Executar o modelo

Console

  1. Acesse a página Criar job usando um modelo do Dataflow.
  2. Acesse Criar job usando um modelo
  3. No campo Nome do job, insira um nome exclusivo.
  4. Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é us-central1.

    Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.

  5. No menu suspenso Modelo do Dataflow, selecione o modelo Spanner para BigQuery.
  6. Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
  7. Cliquem em Executar job.

gcloud

No shell ou no terminal, execute o modelo:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       spannerInstanceId=SPANNER_INSTANCE_ID,\
       spannerDatabaseId=SPANNER_DATABASE_ID,\
       spannerTableId=SPANNER_TABLE_ID,\
       sqlQuery=SQL_QUERY,\
       outputTableSpec=OUTPUT_TABLE_SPEC,\

Substitua:

  • JOB_NAME: um nome de job de sua escolha
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • REGION_NAME: a região em que você quer implantar o job do Dataflow, por exemplo, us-central1
  • SPANNER_INSTANCE_ID: o ID da instância do Spanner
  • SPANNER_DATABASE_ID: o ID do banco de dados do Spanner
  • SPANNER_TABLE_ID: o nome da tabela do Spanner
  • SQL_QUERY: a consulta SQL
  • OUTPUT_TABLE_SPEC: o local da tabela do BigQuery

API

Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a API e os respectivos escopos de autorização, consulte projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "spannerInstanceId": "SPANNER_INSTANCE_ID",
       "spannerDatabaseId": "SPANNER_DATABASE_ID",
       "spannerTableId": "SPANNER_TABLE_ID",
       "sqlQuery": "SQL_QUERY",
       "outputTableSpec": "OUTPUT_TABLE_SPEC",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/",
     "environment": { "maxWorkers": "10" }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer executar o job do Dataflow Google Cloud
  • JOB_NAME: um nome de job de sua escolha
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • LOCATION: a região em que você quer implantar o job do Dataflow, por exemplo, us-central1
  • SPANNER_INSTANCE_ID: o ID da instância do Spanner
  • SPANNER_DATABASE_ID: o ID do banco de dados do Spanner
  • SPANNER_TABLE_ID: o nome da tabela do Spanner
  • SQL_QUERY: a consulta SQL
  • OUTPUT_TABLE_SPEC: o local da tabela do BigQuery

A seguir