Modelo do Spanner para o BigQuery

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

Requisitos do pipeline

  • A tabela do Spanner de origem tem de existir antes de executar o pipeline.
  • O conjunto de dados do BigQuery tem de existir antes da execução do pipeline.
  • Um ficheiro JSON que descreve o seu esquema do BigQuery.

    O ficheiro tem de conter uma matriz JSON de nível superior com o título fields. O conteúdo da matriz fields tem de usar o seguinte padrão:
    {"name": "COLUMN_NAME", "type": "DATA_TYPE"}.

    O JSON seguinte descreve 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 o BigQuery não suporta a importação de dados para campos de STRUCT (Registo) na tabela do BigQuery de destino.

Parâmetros de modelos

Parâmetros obrigatórios

  • spannerInstanceId: o ID da instância da base de dados do Spanner a partir da qual ler.
  • spannerDatabaseId: o ID da base de dados do Spanner a exportar.
  • outputTableSpec: a localização da tabela de resultados do BigQuery na qual escrever os resultados. Por exemplo, <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.Consoante o createDisposition especificado, a tabela de saída pode ser criada automaticamente através do esquema Avro fornecido pelo utilizador.

Parâmetros opcionais

Execute o modelo

Consola

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. Opcional: para Ponto final regional, selecione um valor no menu pendente. A região predefinida é us-central1.

    Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.

  5. No menu pendente Modelo do fluxo de dados, selecione the Spanner to BigQuery template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Clique em Executar tarefa.

gcloud

Na 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/Cloud_Spanner_to_BigQuery_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 o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • SPANNER_INSTANCE_ID: o ID da instância do Spanner
  • SPANNER_DATABASE_ID: o ID da base de dados do Spanner
  • SPANNER_TABLE_ID: o nome da tabela do Spanner
  • SQL_QUERY: a consulta SQL
  • OUTPUT_TABLE_SPEC: a localização da tabela do BigQuery

API

Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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/Cloud_Spanner_to_BigQuery_Flex",
     "environment": { "maxWorkers": "10" }
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • SPANNER_INSTANCE_ID: o ID da instância do Spanner
  • SPANNER_DATABASE_ID: o ID da base de dados do Spanner
  • SPANNER_TABLE_ID: o nome da tabela do Spanner
  • SQL_QUERY: a consulta SQL
  • OUTPUT_TABLE_SPEC: a localização da tabela do BigQuery

O que se segue?