Uso do formato Avro no AWS Glue
O AWS Glue recupera dados de fontes e grava dados em destinos armazenados e transportados em vários formatos de dados. Se seus dados forem armazenados ou transportados no formato de dados Avro, o documento apresenta os recursos disponíveis para usar seus dados no AWS Glue.
O AWS Glue é compatível com o uso do formato Avro. Esse é um formato de dados orientado a performance e baseado em linhas. Para uma apresentação do formato feita pela autoridade padrão, consulte a documentação do Apache Avro 1.8.2
Você pode usar o AWS Glue para ler arquivos Avro do Amazon S3 e de fontes de transmissão, bem como para gravar arquivos Avro no Amazon S3. Você pode ler e gravar arquivos bzip2 e gzip do S3 que contenham arquivos Avro. Além disso, você pode gravar arquivamentos deflate, snappy e xz contendo arquivos Avro. Você configura o comportamento de compactação no Parâmetros de conexão do S3 e não na configuração apresentada nesta página.
A tabela a seguir mostra quais são as operações comuns do AWS Glue compatíveis com a opção de formato Avro.
| Leitura | Escrever | Leitura de transmissão | Agrupar arquivos pequenos | Marcadores de trabalho |
|---|---|---|---|---|
| Compatível | Compatível | Compatível* | Sem compatibilidade | Compatível |
*Compatível, com restrições. Para obter mais informações, consulte Notas e restrições para fontes de transmissão Avro.
Exemplo: ler arquivos ou pastas Avro do S3
Pré-requisitos: você precisará dos caminhos do S3 (s3path) para os arquivos ou pastas Avro que deseja ler.
Configuração: nas opções da sua função, especifique format="avro". Em seu connection_options, use a chave paths para especificar s3path. Você pode configurar como o leitor interage com o S3 no connection_options. Para obter detalhes, consulte Opções de formato de dados para entradas e saídas de ETL no AWSGlue: Referência de opções de conexão do Amazon S3. Você pode configurar como o leitor interpreta os arquivos Avro em seu format_options. Para obter mais detalhes, consulte Avro Configuration Reference (Referência de configuração de Avro).
O seguinte script de ETL do AWS Glue mostra o processo de leitura de arquivos ou pastas Avro provenientes do S3:
Exemplo: gravar arquivos e pastas Avro no S3
Pré-requisitos: você precisará de um DataFrame (dataFrame) ou de um DynamicFrame (dynamicFrame) inicializado. Você também precisará do caminho de saída esperado do S3, s3path.
Configuração: nas opções da sua função, especifique format="avro". Em seu connection_options, use a chave paths para especificar seu s3path. Em connection_options, você pode alterar ainda mais a forma como o gravador interage com o S3. Para obter detalhes, consulte Opções de formato de dados para entradas e saídas de ETL no AWSGlue: Referência de opções de conexão do Amazon S3. Você pode alterar a forma como o gravador interpreta os arquivos Avro em format_options. Para obter mais detalhes, consulte Avro Configuration Reference (Referência de configuração de Avro).
O seguinte script de ETL do AWS Glue mostra o processo de gravação de arquivos ou pastas Avro no S3.
Referência de configuração de Avro
Você pode usar os seguinte valores de format_options sempre que as bibliotecas do AWS Glue especificarem format="avro":
version: especifica a versão do formato de leitor/gravador Apache Avro a ser suportada. O padrão é “1.7”. É possível especificarformat_options={"version": “1.8”}para habilitar a leitura e gravação do tipo lógico Avro. Para obter mais informações, consulte a Especificação do Apache Avro 1.7.7e a Especificação do Apache Avro 1.8.2 . O conector do Apache Avro 1.8 oferece suporte para os seguintes tipos de conversão:
Para o leitor: esta tabela mostra a conversão entre o tipo de dados Avro (tipo lógico e o tipo primitivo Avro) e o tipo de dados DynamicFrame do AWS Glue para o leitor Avro 1.7 e 1.8.
| Tipo de dados Avro: Tipo lógico |
Tipo de dados Avro: Tipo primitivo Avro |
Tipo de dados GlueDynamicFrame: Leitor Avro 1.7 |
Tipo de dados GlueDynamicFrame: Leitor Avro 1.8 |
|---|---|---|---|
| Decimal | bytes | BINARY | Decimal |
| Decimal | fixo | BINARY | Decimal |
| Data | int | INT | Data |
| Tempo (milissegundo) | int | INT | INT |
| Tempo (microssegundo) | longo | LONG | LONG |
| Time stamp (milissegundo) | longo | LONG | Timestamp |
| Time stamp (microssegundo) | longo | LONG | LONG |
| Duração (não é um tipo lógico) | fixo de 12 | BINARY | BINARY |
Para o gravador: esta tabela mostra a conversão entre o tipo de dados DynamicFrame do AWS Glue e o tipo de dados Avro para o gravador Avro 1.7 e 1.8.
Tipo de dados do DynamicFrame do AWS Glue |
Tipo de dados Avro: Gravador Avro 1.7 |
Tipo de dados Avro: Gravador Avro 1.8 |
|---|---|---|
| Decimal | String | decimal |
| Data | String | date |
| Marca de data e hora | String | timestamp-micros |
Suporte para Avro Spark DataFrame
Para usar o Avro da API Spark DataFrame, é necessário instalar o plugin Spark Avro para a versão correspondente do Spark. A versão do Spark disponível em seu trabalho é determinada pela versão do AWS Glue. Para obter mais informações sobre as versões do Spark, consulte Versões do AWS Glue. O plugin é mantido pelo Apache. Não oferecemos garantias específicas de suporte.
No AWS Glue 2.0: use a versão 2.4.3 do plugin do Spark Avro. Você encontra esse JAR no Maven Central. Consulte org.apache.spark:spark-avro_2.12:2.4.3
No AWS Glue 3.0: use a versão 3.1.1 do plugin do Spark Avro. Você encontra esse JAR no Maven Central. Consulte org.apache.spark:spark-avro_2.12:3.1.1
Para incluir JARs adicionais em um trabalho de ETL do AWS Glue, use o parâmetro de trabalho --extra-jars. Para obter mais informações sobre parâmetros de trabalho, consulte Usar parâmetros de tarefa em tarefas do AWS Glue. Também é possível configurar esse parâmetro no Console de gerenciamento da AWS.