Um classificador lê os dados em uma armazenamento de dados. Se reconhecer o formato dos dados, ele gerará um esquema. O classificador também retornará um número de certeza para indicar o nível de certeza referente ao reconhecimento do formato.
O AWS Glue fornece um conjunto de classificadores integrados, mas você também pode criar classificadores personalizados. O AWS Glue invoca classificadores personalizados primeiro, na ordem especificada na definição do crawler. Dependendo dos resultados retornados dos classificadores personalizados, o AWS Glue também poderá invocar classificadores integrados. Se um classificador retornar certainty=1.0
durante o processamento, ele indicará que está 100% certo sobre a criação do esquema correto. Em seguida, o AWS Glue usa a saída desse classificador.
Se nenhum classificador retornar certainty=1.0
, o AWS Glue usará a saída do classificador que tiver a maior certeza. Se nenhum classificador retornar uma certeza maior que 0.0
, o AWS Glue retornará a string de classificação padrão UNKNOWN
.
Quando devo usar um classificador?
Você deve usar classificadores ao fazer crawling em um armazenamento de dados para definir tabelas de metadados no AWS Glue Data Catalog. Você pode configurar seu crawler com um conjunto de classificadores ordenados. Quando o crawler invoca um classificador, o classificador determina se os dados são reconhecidos. Se o classificador não puder reconhecer os dados ou não estiver 100% certo, o crawler chamará o próximo classificador na lista para tentar reconhecer os dados.
Para obter mais informações sobre como criar um classificador usando o console do AWS Glue, consulte Criar classificadores usando o console do AWS Glue.
Classificadores personalizados
A saída de um classificador inclui uma string que indica a classificação ou o formato do arquivo (por exemplo, json
) e o esquema dele. Para classificadores personalizados, você define a lógica de criação do esquema com base no tipo de classificador. Os tipos de classificadores incluem a definição de esquemas com base em padrões grok, tags XML e caminhos JSON.
Se você alterar uma definição de classificador, os dados que foram rastreados anteriormente usando o classificador não serão reclassificados. Um crawler monitora os dados rastreados anteriormente. Novos dados são classificados com o classificador atualizado, o que pode resultar em um esquema atualizado. Se o esquema de seus dados evoluiu, atualize o classificador para considerar quaisquer alterações de esquema quando o crawler for executado. Para reclassificar dados para corrigir um classificador incorreto, crie um novo crawler com o classificador atualizado.
Para obter mais informações sobre como criar classificadores personalizados no AWS Glue, consulte Escrever classificadores personalizados para diversos formatos de dados.
nota
Se seu formato de dados for reconhecido por um dos classificadores integrados, você não precisará criar um classificador personalizado.
Classificadores integrados
O AWS Glue fornece classificadores integrados para vários formatos, incluindo JSON, CSV, logs da web e diversos sistemas de banco de dados.
Se o AWS Glue não encontrar um classificador personalizado adequado para o formato de dados de entrada com 100% de certeza, ele invocará os classificadores integrados na ordem exibida na tabela a seguir. Os classificadores integrados retornam um resultado para indicar se o formato é correspondente (certainty=1.0
) ou não (certainty=0.0
). O primeiro classificador que tiver certainty=1.0
fornecerá a string de classificação e o esquema para uma tabela de metadados no Data Catalog.
Tipo de classificador | String de classificação | Observações |
---|---|---|
Apache Avro | avro |
Lê o esquema no início do arquivo para determinar o formato. |
Apache ORC | orc |
Lê os metadados do arquivo para determinar o formato. |
Apache Parquet | parquet |
Lê o esquema no final do arquivo para determinar o formato. |
JSON | json |
Lê o início do arquivo para determinar o formato. |
JSON binário | bson |
Lê o início do arquivo para determinar o formato. |
XML | xml |
Lê o início do arquivo para determinar o formato. O AWS Glue determina o esquema de tabela com base em tags XML no documento. Para obter informações sobre como criar um classificador XML personalizado para especificar linhas no documento, consulte Gravar classificadores XML personalizados. |
Amazon Ion | ion |
Lê o início do arquivo para determinar o formato. |
Log do Apache combinado | combined_apache |
Determina os formatos de log por meio de um padrão grok. |
Log do Apache | apache |
Determina os formatos de log por meio de um padrão grok. |
Log de kernel do Linux | linux_kernel |
Determina os formatos de log por meio de um padrão grok. |
Log da Microsoft | microsoft_log |
Determina os formatos de log por meio de um padrão grok. |
Log do Ruby | ruby_logger |
Lê o início do arquivo para determinar o formato. |
Log do Squid 3.x | squid |
Lê o início do arquivo para determinar o formato. |
Log de monitoramento do Redis | redismonlog |
Lê o início do arquivo para determinar o formato. |
Log do Redis | redislog |
Lê o início do arquivo para determinar o formato. |
CSV | csv |
Verifica os seguintes delimitadores: vírgula (,), pipe (|), tabulação (\t), ponto e vírgula (;) e Ctrl+A (\u0001). Ctrl+A é o caractere de controle Unicode para Start Of
Heading . |
Amazon Redshift | redshift |
Usa conexão JDBC para importar metadados. |
MySQL | mysql |
Usa conexão JDBC para importar metadados. |
PostgreSQL | postgresql |
Usa conexão JDBC para importar metadados. |
Banco de dados Oracle | oracle |
Usa conexão JDBC para importar metadados. |
Microsoft SQL Server | sqlserver |
Usa conexão JDBC para importar metadados. |
Amazon DynamoDB | dynamodb |
Lê dados da tabela do DynamoDB. |
Os arquivos nos seguintes formatos compactados podem ser classificados:
-
(com suporte para arquivos ZIP contendo apenas um arquivo). Observe que o formato Zip não tem bom suporte em outros serviços (por causa do arquivamento).
-
BZIP
-
GZIP
-
LZ4
-
Snappy (compatível com os formatos Snappy Standard e Snappy de Hadoop nativo)
Classificador CSV integrado
O classificador CSV integrado analisa o conteúdo do arquivo CSV para determinar o esquema de uma tabela do AWS Glue. Esse classificador verifica os seguintes delimitadores:
Vírgula (,)
Barra vertical (|)
Tabulação (\t)
Ponto e vírgula (;)
Ctrl+A (\u0001)
Ctrl+A é o caractere de controle Unicode para
Start Of Heading
.
Para ser classificado como CSV, o esquema da tabela deve ter pelo menos duas colunas e duas linhas de dados. O classificador CSV usa um número de heurística para determinar se um cabeçalho está presente em um determinado arquivo. Se o classificador não puder determinar um cabeçalho a partir da primeira linha de dados, os cabeçalhos das colunas serão exibidos como col1
, col2
, col3
e assim por diante. O classificador CSV integrado determina se é necessário inferir um cabeçalho avaliando as seguintes características do arquivo:
Cada coluna em um possível cabeçalho é analisada como um tipo de dados STRING.
Exceto pela última coluna, todas as colunas em um possível cabeçalho têm conteúdo com menos de 150 caracteres. Para permitir um delimitador final, a última coluna pode ficar vazia em todo o arquivo.
Cada coluna em um possível cabeçalho deve atender aos requisitos do AWS Glue
regex
para um nome de coluna.A linha de cabeçalho deve ser suficientemente diferente das linhas de dados. Para determinar isso, uma ou mais linhas devem ser analisadas como diferentes do tipo STRING. Se todas as colunas forem do tipo STRING, a primeira linha de dados não será suficientemente diferente das linhas subsequentes a serem usadas como cabeçalho.
nota
Se o classificador CSV integrado não criar sua tabela do AWS Glue como você deseja, é possível usar uma das seguintes alternativas:
Altere os nomes das colunas no Data Catalog, defina
SchemaChangePolicy
como LOG e a configuração de saída da partição comoInheritFromTable
para futuras execuções do crawler.Crie um classificador grok personalizado para analisar os dados e atribuir as colunas desejadas.
O classificador CSV integrado cria tabelas fazendo referência ao
LazySimpleSerDe
como a biblioteca de serialização, que é uma boa opção para inferência de tipos. No entanto, se os dados CSV contiverem strings entre aspas, edite a definição da tabela e altere a biblioteca SerDe paraOpenCSVSerDe
. Ajuste os tipos inferidos para STRING, definaSchemaChangePolicy
como LOG e defina a configuração de saída das partições comoInheritFromTable
para futuras execuções do crawler. Para mais informações sobre bibliotecas SerDe, consulte Referência de SerDe no Manual do usuário do Amazon Athena.