Converta o formato de dados de entrada no Amazon Data Firehose - Amazon Data Firehose

A entrega de streams do Amazon Data Firehose para tabelas Apache Iceberg no Amazon S3 está em versão prévia e está sujeita a alterações.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Converta o formato de dados de entrada no Amazon Data Firehose

O Amazon Data Firehose pode converter o formato dos seus dados de entrada JSON para Apache Parquet ou Apache ORC antes de armazenar os dados no Amazon S3. Parquet e ORC são formatos de dados colunares que economizam espaço e permitem consultas mais rápidas em comparação com formatos orientados a linhas, como. JSON Se você quiser converter um formato de entrada diferente deJSON, como valores separados por vírgula (CSV) ou texto estruturado, você pode usar AWS Lambda para transformá-lo em JSON primeiro lugar. Para obter mais informações, consulte Transforme dados de origem no Amazon Data Firehose.

Você pode converter o formato dos seus dados mesmo se você agregar seus registros antes de enviá-los para o Amazon Data Firehose.

O Amazon Data Firehose exige os três elementos a seguir para converter o formato dos dados do seu registro:

Deserializer

O Amazon Data Firehose exige um desserializador para ler seus dados de entrada. JSON Você pode escolher um dos dois tipos de desserializador a seguir.

Ao combinar vários JSON documentos no mesmo registro, certifique-se de que sua entrada ainda seja apresentada no JSON formato compatível. Uma matriz de JSON documentos não é uma entrada válida.

Por exemplo, essa é a entrada correta: {"a":1}{"a":2}

E essa é a entrada incorreta: [{"a":1}, {"a":2}]

Escolha o OpenX JSON SerDe se sua entrada JSON contiver carimbos de data e hora nos seguintes formatos:

  • yyyyy-MM-dd'T'HH:mm:ss[.S]'Z', em que a fração pode ter até 9 dígitos, por exemplo, 2017-02-07T15:13:01.39256Z.

  • yyyy-[M]M-[d]d HH:mm:ss[.S], em que a fração pode ter até 9 dígitos, por exemplo, 2017-02-07 15:13:01.14.

  • Segundos a partir do ponto zero, por exemplo, 1518033528.

  • Milissegundos a partir do ponto zero, por exemplo, 1518033528123.

  • Segundos a partir do ponto zero com ponto flutuante, por exemplo, 1518033528.123.

O OpenX JSON SerDe pode converter pontos (.) em sublinhados (). _ Ele também pode converter JSON as teclas em minúsculas antes de desserializá-las. Para obter mais informações sobre as opções que estão disponíveis com esse desserializador por meio do Amazon Data Firehose, consulte O. penXJson SerDe

Se você não tiver certeza de qual desserializador escolher, use o OpenX JSON SerDe, a menos que tenha carimbos de data e hora que ele não suporta.

Se você tiver carimbos de data e hora em formatos diferentes dos listados anteriormente, use o Apache Hive. JSON SerDe Ao escolher esse desserializador, você poderá especificar os formatos de time stamp a serem usados. Para fazer isso, siga a sintaxe do padrão de string do formato Joda Time DateTimeFormat. Para obter mais informações, consulte Classe DateTimeFormat.

Você também pode usar o valor especial millis para analisar o time stamp em milissegundos de epoch. Se você não especificar um formato, o Amazon Data Firehose usa java.sql.Timestamp::valueOf por padrão.

O Hive JSON SerDe não permite o seguinte:

  • Pontos (.) em nomes de coluna.

  • Campos cujo tipo é uniontype.

  • Campos que têm tipos numéricos no esquema, mas que são cadeias de caracteres no. JSON Por exemplo, se o esquema for (um int) e o JSON for{"a":"123"}, o Hive apresentará um SerDe erro.

O Hive SerDe não converte aninhados JSON em strings. Por exemplo, se você tiver {"a":{"inner":1}}, ele não tratará {"inner":1} como uma string.

Schema

O Amazon Data Firehose exige um esquema para determinar como interpretar esses dados. Usar o AWS Glue para criar um esquema no AWS Glue Data Catalog. Em seguida, o Amazon Data Firehose faz referência a esse esquema e o usa para interpretar seus dados de entrada. Você pode usar o mesmo esquema para configurar o Amazon Data Firehose e seu software de análise. Para obter mais informações, consulte Preenchendo o AWS Glue o catálogo de dados no AWS Glue Guia do desenvolvedor.

nota

O esquema criado em AWS Glue O catálogo de dados deve corresponder à estrutura de dados de entrada. Caso contrário, os dados convertidos não conterão atributos que não estejam especificados no esquema. Se você usa aninhadoJSON, use um STRUCT tipo no esquema que espelhe a estrutura dos seus dados. JSON Veja este exemplo para saber como lidar com o aninhado JSON com um STRUCT tipo.

Importante

Para tipos de dados que não especificam um limite de tamanho, há um limite prático de 32 MBs para todos os dados em uma única linha.

Se você especificar o comprimento para CHAR ouVARCHAR, o Firehose truncará as cadeias de caracteres no comprimento especificado ao ler os dados de entrada. Se a sequência de dados subjacente for maior, ela permanecerá inalterada.

Serializer

O Firehose requer um serializador para converter os dados no formato de armazenamento colunar de destino (Parquet ouORC) — Você pode escolher um dos dois tipos de serializadores a seguir.

O serializador que você escolhe depende de suas necessidades de negócios. Para saber mais sobre as duas opções de serializador, consulte Parquet ORC SerDe. SerDe