Ingerir dados em lote

Embora a principal maneira de ingerir dados no Manufacturing Data Engine (MDE) seja usando streaming pela borda do Manufacturing Connect (MCe) ou enviando mensagens ao Pub/Sub, também é possível ingerir arquivos em lote. Isso pode ser útil para reprocessar dados ou importar dados de sistemas externos.

O carregamento em lote funciona criando um IngestionSpecification usando a interface da Web ou a API e fazendo o upload de um ou mais arquivos para uma pasta em um bucket do Cloud Storage configurado pelo MDE, que, por padrão, tem o nome <project-id>-batch-ingestion. Quando um novo arquivo é enviado para esse bucket, ele é detectado pelo job do Dataflow do leitor do Cloud Storage. O job divide o arquivo em cada mensagem individual e envia cada uma delas para o tópico do Pub/Sub input-messages.

Formatos compatíveis

O carregamento em lote oferece suporte aos seguintes formatos de dados:

  • JSON: delimitado por nova linha. Cada linha será enviada como uma nova mensagem.
  • CSV: com ou sem cabeçalhos (podem ser definidos), oferece suporte a pular linhas e diferentes separadores. A mensagem é convertida em JSON usando cada coluna de cabeçalho como chave e a coluna de linha correspondente como valor.
  • AVRO: mapeia cada linha do AVRO para JSON.
  • AVRO_RAW_WRITER: lê as mensagens não processadas gravadas pelo gravador do Cloud Storage e grava cada mensagem de volta, preservando o ID da mensagem do Pub/Sub.

Configuração

Para que o leitor do Cloud Storage processe arquivos, ele precisa de uma File Ingestion Specification que defina o tipo de arquivo esperado, as opções e a pasta em que ele será enviado.

Todos os formatos exigem os seguintes parâmetros:

  • name: nome para o File Ingestion Specification.
  • folderName: Pasta em que os arquivos para este File Ingestion Specification serão enviados.
  • source: formato a ser usado (JSON/CSV/AVRO/AVRO_RAW_WRITER).

Além disso, a origem CSV oferece suporte ao seguinte:

  • separator: separador a ser usado (, será usado se nenhum for fornecido).
  • skip_rows: se alguma linha deve ser ignorada antes de começar a ler o arquivo CSV.
  • headers:
    • infer_headers: se os cabeçalhos devem ser inferidos pela primeira linha lida.
    • headerNames: fornece uma lista ordenada de nomes de cabeçalho a serem usados.
  • insert_metadata: se os metadados relacionados ao arquivo ingerido (filePath, fileName, ingestionName) devem ser incluídos. Eles são adicionados como pares de chave-valor extras à mensagem enviada.

Exemplos de configurações

Esta seção contém alguns exemplos de configurações para carregamento em lote.

Ingerir arquivos JSON delimitados por nova linha

REST

POST configuration/v1/ingestions

{
  "name": "json-simple",
  "source": "JSON",
  "folderName": "jsonFiles"
}

Console

  1. Acesse a configuração da File Ingestion Specification.
  2. Abra a seção FILE INGESTION no menu superior da 'Cloud Management' seção.

    Ingestão de arquivos: listar especificações de ingestão de arquivos

  3. As File Ingestion Specifications atuais estão listadas na seção FILE INGESTION . Elas podem ser modificadas, ativadas, desativadas ou excluídas usando o ícone 'Actions' ao lado de cada especificação de ingestão.

    Ingestão de arquivos: ação disponível nas especificações de ingestão

  4. Para criar uma nova File Ingestion Specification clique em 'ADD NEW INGESTION SPECIFICATION'. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir a nova File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  5. Para criar uma nova especificação de ingestão de arquivos JSON delimitados por nova linha selecione JSON no menu 'Source Type' e forneça os dois parâmetros obrigatórios. Neste exemplo:

    • name: nome da File Ingestion Specification.
    • folderName: Pasta em que os arquivos dessa File Ingestion Specification serão enviados.

    Ingestão de arquivos: nova especificação de ingestão de arquivos JSON

  6. Depois que os parâmetros forem concluídos, clique em 'CREATE'. Se a nova especificação de ingestão de arquivos tiver sido criada, uma mensagem de confirmação será exibida.

Ingerir arquivos AVRO

REST

POST configuration/v1/ingestions

{
  "name": "avro-simple",
  "source": "AVRO",
  "folderName": "avroFiles"
}

Console

  1. Acesse a configuração da File Ingestion Specification.
  2. Abra a seção FILE INGESTION no menu superior da 'Cloud Management' seção.

    Ingestão de arquivos: listar especificações de ingestão de arquivos

  3. As File Ingestion Specifications atuais estão listadas na seção FILE INGESTION . Elas podem ser modificadas, ativadas, desativadas ou excluídas usando o ícone 'Actions' ao lado de cada especificação de ingestão.

    Ingestão de arquivos: ação disponível nas especificações de ingestão

  4. Para criar uma nova File Ingestion Specification , clique em ADD NEW INGESTION SPECIFICATION.

  5. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir a nova File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  6. Para criar uma nova especificação de ingestão de arquivo AVRO , selecione AVRO em o menu 'Source Type'.

  7. Forneça os dois parâmetros obrigatórios. Neste exemplo:

    • name: nome da File Ingestion Specification.
    • folderName: Pasta em que os arquivos dessa File Ingestion Specification serão enviados.

    Ingestão de arquivos: nova especificação de ingestão de arquivos AVRO

  8. Depois que os parâmetros forem concluídos, clique em 'CREATE'. Se a nova especificação de ingestão de arquivos tiver sido criada, uma mensagem de confirmação será exibida.

Ingerir arquivos CSV inferindo nomes de colunas de cabeçalhos

REST

POST configuration/v1/ingestions

{
  "name": "csv-simple",
  "source": "CSV",
  "folderName": "csv-simple",
  "separator": ",",
  "headers": {
    "inferHeaders": true
  }
}

Console

  1. Acesse a interface da Web do Manufacturing Connect.
  2. Acesse a configuração da File Ingestion Specification.
  3. Abra a seção FILE INGESTION no menu superior da 'Cloud Management' seção.

    Ingestão de arquivos: listar especificações de ingestão de arquivos

  4. As File Ingestion Specifications atuais estão listadas na seção FILE INGESTION . Elas podem ser modificadas, ativadas, desativadas ou excluídas usando o ícone 'Actions' ao lado de cada especificação de ingestão.

    Ingestão de arquivos: ação disponível nas especificações de ingestão

  5. Para criar uma nova File Ingestion Specification , clique em ADD NEW INGESTION SPECIFICATION.

  6. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir a nova File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  7. Para criar uma nova File Ingestion Specification clique no 'ADD NEW INGESTION SPECIFICATION'.

  8. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir.

    File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  9. Para criar uma nova especificação de ingestão de arquivos CSV inferindo nomes de colunas de cabeçalhos, selecione CSV no menu 'Source Type' e forneça os sete parâmetros obrigatórios. Neste exemplo:

    • name: nome da File Ingestion Specification.
    • folderName: Pasta em que os arquivos dessa File Ingestion Specification serão enviados.
    • separator: separador a ser usado (, será usado se nenhum for fornecido).
    • skip_rows: se alguma linha deve ser ignorada antes de começar a ler o arquivo CSV.
    • headers:
    • infer_headers: se os cabeçalhos devem ser inferidos pela primeira linha lida. Selecione 'YES' para inferir nomes de colunas de cabeçalhos.
    • insert_metadata: se os metadados relacionados ao arquivo ingerido (filePath, fileName, ingestionName) devem ser incluídos.

    Ingestão de arquivos: nova especificação de ingestão de arquivos CSV

  10. Depois que os parâmetros forem concluídos, clique em 'CREATE'.

  11. Se a nova especificação de ingestão de arquivos tiver sido criada, uma mensagem de confirmação será exibida.

Ingerir arquivos CSV fornecendo nomes de colunas e adicionando metadados de ingestão

REST

POST configuration/v1/ingestions

{
  "name": "csv-headers-metadata",
  "source": "CSV",
  "folderName": "csv-headers",
  "separator": ",",
  "insertMetadata": true,
  "headers": {
    "headerNames": {
      "names": ["one", "two", "three"]
    }
  }
}

Console

  1. Acesse a configuração da File Ingestion Specification.
  2. Abra a seção FILE INGESTION no menu superior da 'Cloud Management' seção.

    Ingestão de arquivos: listar especificações de ingestão de arquivos

  3. As File Ingestion Specifications atuais estão listadas na seção FILE INGESTION . Elas podem ser modificadas, ativadas, desativadas ou excluídas usando o ícone 'Actions' ao lado de cada especificação de ingestão.

    Ingestão de arquivos: ação disponível nas especificações de ingestão

  4. Para criar uma nova File Ingestion Specification , clique em ADD NEW INGESTION SPECIFICATION.

  5. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir a nova File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  6. Para criar uma nova especificação de ingestão de arquivos CSV fornecendo nomes de colunas e adicionando metadados de ingestão, selecione CSV no'Source Type'.

  7. Forneça os oito parâmetros obrigatórios. Neste exemplo:

    • name: nome da File Ingestion Specification.
    • folderName: Pasta em que os arquivos dessa File Ingestion Specification serão enviados.
    • separator: separador a ser usado (, será usado se nenhum for fornecido).
    • skip_rows: se alguma linha deve ser ignorada antes de começar a ler o arquivo CSV.
    • headers:
      • infer_headers: se os cabeçalhos devem ser inferidos pela primeira linha lida. Selecione 'NO' para não inferir nomes de colunas de cabeçalhos.
      • headerNames: fornece uma lista ordenada de nomes de cabeçalho a serem usados.
    • insert_metadata: se os metadados relacionados ao arquivo ingerido (filePath, fileName, ingestionName) devem ser incluídos.

    Ingestão de arquivos: nova especificação avançada de ingestão de arquivos CSV

  8. Depois que os parâmetros forem concluídos, clique no botão 'CREATE'. Se a nova especificação de ingestão de arquivos tiver sido criada, uma mensagem de confirmação será exibida.

Ingerir arquivos CSV inferindo nomes de cabeçalho e ignorando 5 linhas antes de começar a ler o arquivo

REST

POST configuration/v1/ingestions

{
  "name": "csv-skip-rows",
  "source": "CSV",
  "folderName": "csv-skip",
  "skipRows": 5,
  "separator": ",",
  "headers": {
    "inferHeaders": true
  }
}

Console

  1. Acesse a configuração da File Ingestion Specification.
  2. Abra a seção FILE INGESTION no menu superior da 'Cloud Management' seção.

    Ingestão de arquivos: listar especificações de ingestão de arquivos

  3. As File Ingestion Specifications atuais estão listadas na seção FILE INGESTION . Elas podem ser modificadas, ativadas, desativadas ou excluídas usando o ícone 'Actions' ao lado de cada especificação de ingestão.

    Ingestão de arquivos: ação disponível nas especificações de ingestão

  4. Para criar uma nova File Ingestion Specification , clique em ADD NEW INGESTION SPECIFICATION.

  5. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir a nova File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  6. Para criar uma nova especificação de ingestão de arquivos CSV inferindo nomes de cabeçalho e ignorando 5 linhas , selecione CSV no menu 'Source Type'.

  7. Forneça os sete parâmetros obrigatórios. Neste exemplo:

    • name: nome da File Ingestion Specification.
    • folderName: Pasta em que os arquivos dessa File Ingestion Specification serão enviados.
    • separator: separador a ser usado (, será usado se nenhum for fornecido).
    • skip_rows: selecione o número de linhas a serem ignoradas. Neste caso, 5.
    • headers:
      • infer_headers: se os cabeçalhos devem ser inferidos pela primeira linha lida. Selecione 'YES' para inferir nomes de colunas de cabeçalhos.
    • insert_metadata: se os metadados relacionados ao arquivo ingerido (filePath, fileName, ingestionName) devem ser incluídos.

    Ingestão de arquivos: nova especificação de ingestão de arquivos CSV para ignorar linhas

  8. Depois que os parâmetros forem concluídos, clique em 'CREATE'.

  9. Se a nova especificação de ingestão de arquivos tiver sido criada, uma mensagem de confirmação será exibida.

Ingerir arquivos AVRO gerados pelo caminho bruto do gravador do Cloud Storage

REST

POST configuration/v1/ingestions

{
  "name": "avro-reprocess",
  "source": "AVRO_RAW_WRITER",
  "folderName": "avro-raw"
}

Isso é especialmente útil se você precisar reprocessar arquivos. É possível usar a partição de data na pasta de arquivos brutos para copiar apenas os arquivos do período necessário. Exemplo:

gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
gs://<project-id>-batch-ingestion/avro-raw/

Console

  1. Acesse a configuração da File Ingestion Specification.
  2. Abra a seção FILE INGESTION no menu superior da 'Cloud Management' seção.

    Ingestão de arquivos: listar especificações de ingestão de arquivos

  3. As File Ingestion Specifications atuais estão listadas na seção FILE INGESTION . Elas podem ser modificadas, ativadas, desativadas ou excluídas usando o ícone 'Actions' ao lado de cada especificação de ingestão.

    Ingestão de arquivos: ação disponível nas especificações de ingestão

  4. Para criar uma nova File Ingestion Specification , clique em ADD NEW INGESTION SPECIFICATION.

  5. Um novo menu lateral será exibido à direita da tela contendo todos os parâmetros necessários para definir a nova File Ingestion Specification:

    Ingestão de arquivos: nova especificação de ingestão de arquivos

  6. Para criar uma nova especificação de ingestão de arquivos AVRO gerados pelos caminhos brutos do gravador do Cloud Storage, selecione AVRO Raw no menu 'Source Type' e forneça os dois parâmetros obrigatórios. Neste exemplo:

    • name: nome da File Ingestion Specification.
    • folderName: Pasta em que os arquivos dessa File Ingestion Specification serão enviados.

    Ingestão de arquivos: nova especificação de ingestão de arquivos AVRO brutos

  7. Depois que os parâmetros forem concluídos, clique em 'CREATE'.

  8. Se a nova especificação de ingestão de arquivos tiver sido criada, uma mensagem de confirmação será exibida.

Isso é especialmente útil se você precisar reprocessar arquivos. É possível usar a partição de data na pasta de arquivos brutos para copiar apenas os arquivos do período necessário. Por exemplo:

  gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
  gs://<project-id>-batch-ingestion/avro-raw/