Partilhar via


Usar o LightIngest para ingerir dados no Azure Data Explorer

LightIngest é um utilitário de linha de comando para ingestão de dados ad-hoc no Azure Data Explorer. O utilitário pode extrair dados de origem de uma pasta local, um contêiner de armazenamento de blob do Azure ou um bucket do Amazon S3.

LightIngest é mais útil quando você deseja ingerir uma grande quantidade de dados, porque não há restrição de tempo na duração da ingestão. Também é útil quando você deseja consultar registros posteriormente de acordo com o tempo em que foram criados e não com o tempo em que foram ingeridos.

Para obter um exemplo de como gerar automaticamente um comando LightIngest, consulte ingerir dados históricos.

Observação

A ingestão suporta um tamanho máximo de ficheiro de 6 GB. A recomendação é ingerir arquivos entre 100 MB e 1 GB.

Pré-requisitos

Observação

Considere usar os comandos de ingestão em fila, pois não requerem a instalação de software.

Executar LightIngest

Para executar LightIngest:

  1. No prompt de comando, digite LightIngest seguido pelo argumento de linha de comando relevante.

    Sugestão

    Para obter uma lista de argumentos de linha de comando suportados, digite LightIngest /help.

  2. Enter ingest- seguido da cadeia de conexão para o cluster do Azure Data Explorer que gerencia a ingestão. Coloque a cadeia de conexão entre aspas duplas e siga a especificação de cadeias de conexão Kusto.

    Por exemplo:

    LightIngest "https://ingest-{Cluster name and region}.kusto.windows.net;Fed=True" -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -pattern:"*.csv.gz" -format:csv -limit:2 -ignoreFirst:true -cr:10.0 -dontWait:true
    

Recomendações de desempenho

  • Para melhor administrar a carga de ingestão e recuperar-se de erros transitórios, utilize o ponto de extremidade de ingestão em https://ingest-{yourClusterNameAndRegion}.kusto.windows.net.

  • Para um desempenho de ingestão ideal, o LightIngest precisa do tamanho dos dados brutos para que possa estimar o tamanho não compactado dos arquivos locais. No entanto, o LightIngest pode não ser capaz de estimar corretamente o tamanho bruto dos blobs compactados sem primeiro baixá-los. Portanto, ao ingerir blobs compactados, defina a rawSizeBytes propriedade nos metadados de blob como tamanho de dados não compactados em bytes.

Argumentos de linha de comando

Argument Tipo Description Obrigatório
string Uma cadeia de conexão Kusto especificando o ponto de extremidade Kusto que manipula a ingestão. Coloque este valor entre aspas duplas. ✔️
-base de dados, -db string O nome do banco de dados do Azure Data Explorer de destino.
-tabela string O nome da tabela do Azure Data Explorer de destino. ✔️
-sourcePath, -source string O local dos dados de origem, que podem ser um caminho de arquivo local, o URI raiz de um contêiner de blob do Azure ou o URI de um bucket do Amazon S3. Se os dados forem armazenados em blobs do Azure, o URI deverá incluir a chave da conta de armazenamento ou a Assinatura de Acesso Compartilhado (SAS). Se os dados estiverem em um bucket do S3, o URI deverá incluir a chave de credencial. Coloque este valor entre aspas duplas. Para obter mais informações, consulte Cadeias de conexão de armazenamento. Passe -sourcePath:;impersonate para listar itens de armazenamento do Azure com permissões de usuário (autorização de prompt do usuário). ✔️
-Identidade gerida, -mi string ID do cliente da identidade gerenciada (atribuída pelo usuário ou atribuída pelo sistema) a ser usada para conexão. Utilize "system" para uma identidade atribuída ao sistema.
-azCli bool Se definido, usa a CLI do Azure para autenticar no serviço Kusto. A CLI do Azure deve ser instalada e conectada.
-ingerirComIdentidadeGerida, -ingestmi string ID do cliente da identidade gerenciada (atribuída pelo usuário ou atribuída pelo sistema) instalada no serviço Kusto para download do armazenamento. Utilize "system" para uma identidade atribuída ao sistema.
-connectToStorageWithManaged Identity, -storageMi string Identificador do cliente da identidade gerenciada (atribuída pelo utilizador ou atribuída pelo sistema) instalada no cliente para listar no armazenamento.
-connectToStorageWithUserAuth, -storageUserAuth string Autentique-se no serviço de armazenamento da fonte de dados com credenciais de usuário. As opções para este valor são PROMPT ou DEVICE_CODE.
-connectToStorageLoginUri, -storageLoginUri string Se -connectToStorageWithUserAuth estiver definido, você pode, opcionalmente, fornecer um URI de entrada do Microsoft Entra ID.
-prefixo string Quando os dados de origem a serem ingeridos residem no armazenamento de blobs, esse prefixo de URL é compartilhado por todos os blobs, excluindo o nome do contêiner.
Por exemplo, se os dados estiverem em MyContainer/Dir1/Dir2, o prefixo deve ser Dir1/Dir2. Coloque este valor entre aspas duplas.
-padrão string Padrão pelo qual os arquivos de origem e blobs são selecionados. Suporta curingas. Por exemplo, "*.csv". Coloque este valor entre aspas duplas.
-zipPattern string Expressão regular a ser usada ao selecionar quais arquivos em um arquivo ZIP devem ser ingeridos. Todos os outros arquivos no arquivo são ignorados. Por exemplo, "*.csv". Coloque este valor entre aspas duplas.
-format, -f string Formato dos dados de origem. Deve ser um dos formatos suportados
-ingestionMappingPath, -mappingPath string Um caminho para um arquivo local para mapeamento de coluna de ingestão. Veja mapeamentos de dados.
-ingestionMappingRef, -mappingRef string O nome de um mapeamento de coluna de ingestão que você criou anteriormente na tabela. Veja mapeamentos de dados.
-creationTimePattern string Quando definido, é usado para extrair a propriedade CreationTime do caminho de arquivo ou blob. Consulte como ingerir dados utilizando CreationTime.
-ignorarPrimeiraLinha, -ignorarPrimeiro bool Se definido, o primeiro registro de cada arquivo ou blob será ignorado. Por exemplo, se os dados de origem tiverem cabeçalhos.
"-etiqueta" string Tags para associar aos dados ingeridos. São permitidas múltiplas ocorrências
-nãoEsperar bool Se definido como true, não espera pela conclusão da ingestão. Útil ao ingerir grandes quantidades de ficheiros e blobs.
-compressão, -cr duplo Indicação de taxa de compressão. Útil ao ingerir arquivos compactados e blobs para ajudar o Azure Data Explorer a avaliar o tamanho dos dados brutos. Calculado como tamanho original dividido pelo tamanho comprimido.
-limite, -l número inteiro Se definido, limita a ingestão aos primeiros arquivos N .
-listOnly, -list bool Se definido, exibe apenas os itens que seriam selecionados para ingestão.
-ingestTimeout (tempo limite de ingestão) número inteiro Tempo limite em minutos para a conclusão de todas as operações de ingestão. O padrão é 60.
-forceSync bool Se definido, força a ingestão síncrona. O padrão é false.
-interativo bool Se definido como false, não solicita a confirmação de argumentos. Para fluxos autônomos e ambientes não interativos. A predefinição é true.
-dataBatchSize número inteiro Define o limite de tamanho total (MB, descompactado) de cada operação de ingestão.
-filesInBatch número inteiro Define-se o limite de contagem de ficheiros e blobs de cada operação de ingestão.
-DevTracing, -trace string Se definido, os logs de diagnóstico são gravados em um diretório local (por padrão, RollingLogs no diretório atual, ou podem ser modificados definindo o valor do switch).

Recursos específicos de blob do Azure

Quando você usa o LightIngest com blobs do Azure, ele usa determinadas propriedades de metadados de blob para aprimorar o processo de ingestão.

Propriedade de metadados Usage
rawSizeBytes, kustoUncompressedSizeBytes Se definido, LightIngest interpreta essas propriedades como o tamanho de dados não compactados
kustoCreationTime, kustoCreationTimeUtc LightIngest interpreta essas propriedades como carimbo de data/hora UTC. Se estiver definido, ele usa essas propriedades para substituir a hora de criação no Kusto. Este recurso é útil para cenários de preenchimento retroativo.

Exemplos de utilização

Os exemplos a seguir pressupõem que você instalou binários LightIngest para seu sistema operacional. Se você instalou o LightIngest como uma ferramenta .NET, substitua LightIngest por LightIngest nos exemplos.

Ingerir dados históricos com a propriedade CreationTime

Quando você carrega dados históricos de um sistema existente no Azure Data Explorer, todos os registros obtêm a mesma data de ingestão. Para particionar seus dados por tempo de criação em vez de tempo de ingestão, use o -creationTimePattern argumento. O -creationTimePattern argumento extrai a CreationTime propriedade do caminho de um ficheiro ou blob. O padrão não precisa refletir todo o caminho do item, apenas a seção que inclui o carimbo de data/hora que você deseja usar.

Os valores de argumento devem incluir:

  • Texto fixo imediatamente anterior ao formato de carimbo de data/hora, entre aspas simples (prefixo)
  • O formato de data/hora, na notação padrão .NET DateTime
  • Texto constante imediatamente após o carimbo de data/hora (sufixo).

Importante

Ao especificar que o tempo de criação deve ser substituído, certifique-se de que a propriedade Lookback na política de mesclagem efetiva Extents da tabela de destino esteja alinhada com os valores nos seus caminhos de ficheiro ou blob.

Examples

  • Um nome de blob que contém a data e hora da seguinte forma: historicalvalues19840101.parquet (a data é composta por quatro dígitos para o ano, dois dígitos para o mês e dois dígitos para o dia do mês).

    O valor para -creationTimePattern argumento faz parte do nome do arquivo: "'historicalvalues'yyyyMMdd'.parquet'"

    LightIngest "https://ingest-{Cluster name and region}.kusto.windows.net;Fed=True" -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -creationTimePattern:"'historicalvalues'yyyyMMdd'.parquet'"
     -pattern:"*.parquet" -format:parquet -limit:2 -cr:10.0 -dontWait:true
    
  • Para um URI de blob que se refere à estrutura hierárquica de pastas, como https://storageaccount/mycontainer/myfolder/2002/12/01/blobname.extension,

    O valor para -creationTimePattern argumento faz parte da estrutura de pastas: "'folder/'yyyy/MM/dd'/blob'"

      LightIngest "https://ingest-{Cluster name and region}.kusto.windows.net;Fed=True" -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -creationTimePattern:"'mycontainer/myfolder/'yyyy/MM/dd'/'"
       -pattern:"*.csv.gz" -format:csv -limit:2 -ignoreFirst:true -cr:10.0 -dontWait:true
    

Ingerir blobs usando uma chave de conta de armazenamento ou um token SAS

  • Ingerir 10 blobs na conta ACCOUNT, de armazenamento especificada, na pasta DIR, no contentor CONT e que correspondem ao padrão *.csv.gz
  • O destino é o banco de dados DB, a tabela TABLEe o mapeamento MAPPING de ingestão é pré-criado no destino
  • A ferramenta aguarda até que as operações de ingestão sejam concluídas
  • Observe as diferentes opções para especificar o banco de dados de destino e a chave da conta de armazenamento versus o token SAS
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"https://ACCOUNT.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}"
  -prefix:"DIR"
  -pattern:*.csv.gz
  -format:csv
  -mappingRef:MAPPING
  -limit:10

LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True;Initial Catalog=DB"
  -table:TABLE
  -source:"https://ACCOUNT.blob.core.windows.net/{ROOT_CONTAINER}?{SAS token}"
  -prefix:"DIR"
  -pattern:*.csv.gz
  -format:csv
  -mappingRef:MAPPING
  -limit:10

Ingerir todos os blobs num contentor, não incluindo linhas de topo

  • Ingerir todos os blobs na conta ACCOUNT de armazenamento especificada, na pasta DIR1/DIR2, no container CONT e correspondendo ao padrão *.csv.gz
  • O destino é o banco de dados DB, a tabela TABLEe o mapeamento MAPPING de ingestão é pré-criado no destino
  • Os blobs de origem contêm linha de cabeçalho, portanto, a ferramenta é instruída a soltar o primeiro registro de cada blob
  • A ferramenta publica os dados para ingestão e não espera que as operações de ingestão sejam concluídas
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"https://ACCOUNT.blob.core.windows.net/{ROOT_CONTAINER}?{SAS token}"
  -prefix:"DIR1/DIR2"
  -pattern:*.csv.gz
  -format:csv
  -mappingRef:MAPPING
  -ignoreFirstRow:true

Ingerir todos os arquivos JSON de um caminho

  • Ingerir todos os arquivos no caminho PATH que correspondem ao padrão *.json
  • Defina o destino como banco de dados DB, tabela TABLEe defina o mapeamento de ingestão no arquivo local MAPPING_FILE_PATH
  • A ferramenta publica os dados para ingestão e não espera que as operações de ingestão sejam concluídas
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"PATH"
  -pattern:*.json
  -format:json
  -mappingPath:"MAPPING_FILE_PATH"

Ingerir arquivos e gravar arquivos de rastreamento de diagnóstico

  • Ingerir todos os arquivos no caminho PATH que correspondem ao padrão *.json
  • Defina o destino como banco de dados DB, tabela TABLEe defina o mapeamento de ingestão no arquivo local MAPPING_FILE_PATH
  • A ferramenta publica os dados para ingestão e não espera que as operações de ingestão sejam concluídas
  • Gravar ficheiros de rastreio de diagnóstico localmente na pasta LOGS_PATH
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"PATH"
  -pattern:*.json
  -format:json
  -mappingPath:"MAPPING_FILE_PATH"
  -trace:"LOGS_PATH"

Autenticar com identidade gerida

O LightIngest executa três ações que podem usar a identidade gerenciada para autenticação. O uso de identidade gerenciada em cada etapa não requer o uso de identidade gerenciada em outras etapas. Para cada ação, o argumento de linha de comando relacionado é fornecido.

  • Conectar-se ao cluster Kusto: Para enfileirar a ingestão, a ferramenta usa uma cadeia de conexão. Use o argumento "-mi" para especificar uma identidade gerenciada instalada na VM cliente que tenha privilégios de ingestão no banco de dados de destino.

  • Conectar-se ao Armazenamento do Azure para baixar blobs: use "-ingestmi" para especificar uma identidade gerenciada instalada no serviço Kusto que tenha privilégios de leitura no contêiner de armazenamento.

  • Conectar-se ao Armazenamento do Azure para listar blobs de contêiner: use o argumento "-storageMi" para especificar uma identidade gerenciada instalada na VM cliente que tenha privilégios de lista no contêiner de armazenamento. Se você usar esse método, mas não o anterior (conectar-se ao armazenamento do Azure para baixar blobs), a identidade gerenciada também deve ter privilégios de leitura e um token é passado para o serviço Kusto para ser usado para a ingestão. Defina os três argumentos.