Sua organização precisa converter um grande volume de dados do cliente em um arquivo simples em dados struct e gravá-los em um arquivo Avro. O arquivo de entrada contém detalhes do cliente, como nome, idade e números de telefone. Se o nome do cliente for nulo no arquivo de entrada, você não deseja incluir detalhes do cliente no arquivo de saída.
Você pode desenvolver um mapeamento com uma transformação Java para definir a funcionalidade de transformação. No ambiente do Hadoop, execute o mapeamento no mecanismo Spark para transformar os dados e gravar os dados struct em um arquivo Avro.
Crie um mapeamento e configure as seguintes transformações:
Transformação de Leitura que lê informações do cliente de uma origem de arquivo simples
Transformação Java como uma transformação ativa que converte dados planos em dados struct e remove dados inconsistentes
Transformação de Gravação que grava os dados struct em um arquivo Avro
A imagem a seguir mostra o mapeamento com uma transformação de Leitura, uma transformação Java e uma transformação de Gravação.
Na guia da biblioteca de definição de tipo do editor de mapeamento, crie uma definição de tipo de dados complex de Cliente. A definição de tipo de dados complex representa o esquema dos dados struct. Renomeie a biblioteca de definição de tipo para CustomerInfo. Adicione os seguintes elementos à definição do tipo de dados complex:
nome do tipo de string
idade do tipo integer
telefones do tipo array com elementos de string
A imagem a seguir mostra a definição de tipo de dados complex na biblioteca de definição de tipos:
Na transformação Java, inclua uma porta de saída struct e especifique a configuração de tipo da porta para referenciar a definição de tipo de dados complex que você criou. A transformação Java gera uma classe Cliente com setters e getters para ler e definir os campos de membros. A classe contém os seguintes campos de membros:
_name
_age
_phones
A imagem a seguir mostra a classe criada para a porta struct na guia
Código Completo
da exibição
Java
:
O tipo de dados Java para a porta de struct usa o nome da biblioteca de definição de tipos e a definição de tipo de dados complex. A imagem a seguir mostra o nome do tipo de dados Java CustomerInfo.Customer para o campo cust no código gerado:
Na exibição
Java
da transformação Java, importe quaisquer pacotes Java de terceiros, incorporados ou personalizados que a transformação requeira. Escreva e compile o código Java para converter os dados planos em dados struct e para remover a linha do cliente, se o nome do cliente for nulo.
A imagem a seguir mostra o código na guia
Na Entrada
:
Valide o mapeamento e execute o mapeamento no mecanismo Spark para gravar os dados transformados na saída do arquivo Avro.