Недействительный файл Parquet: таблица каталога AWS Glue не работает с файлами Snappy

Использование конфигурации, идентичной той, которая использовалась в примере Terraform: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/glue_catalog_table

resource "aws_glue_catalog_table" "aws_glue_catalog_table" {
  name          = "MyCatalogTable"
  database_name = "MyCatalogDatabase"

  table_type = "EXTERNAL_TABLE"

  parameters = {
    EXTERNAL              = "TRUE"
    "parquet.compression" = "SNAPPY"
  }

  storage_descriptor {
    location      = "s3://my-bucket/event-streams/my-stream"
    input_format  = "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat"
    output_format = "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat"

    ser_de_info {
      name                  = "my-stream"
      serialization_library = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe"

      parameters = {
        "serialization.format" = 1
      }
    }

  }
}

а затем попытка выполнить простой запрос Athena к созданной таблице завершается ошибкой

Недействительный паркетный файл

Я использовал все доступные определения SerDe: https://docs.aws.amazon.com/athena/latest/ug/supported-serdes.html И все форматы input_formats, которые я смог найти, но ничего не работает.

Попытка использовать его с файлом Parquet вместо файла Snappy, похоже, работает, но это не соответствует моим потребностям. У кого-нибудь когда-нибудь это работало с файлами Snappy?


person smjm    schedule 07.05.2021    source источник
comment
Я только что запустил этот github.com/prabhacloud/terraform-aws/blob/ master / main.tf и смог быстро прочитать сжатый файл github.com/prabhacloud/terraform-aws/blob/master/. Если это не работает, можете ли вы подтвердить, как вы сжали файл паркета?   -  person Prabhakar Reddy    schedule 07.05.2021
comment
Ваша конфигурация работает с вашим файлом, а не с моим. Мой сжимается с помощью Firehose с Snappy для сжатия S3.   -  person smjm    schedule 10.05.2021
comment
Можете ли вы загрузить свой образец паркета в какое-нибудь публичное репо и поделиться им здесь? попробуйте Github или любое другое репо   -  person Prabhakar Reddy    schedule 10.05.2021
comment
прикрепленный файл не является паркетным файлом, а является файлом CSV. Вам следует использовать разные serde. Позвольте мне написать ответ.   -  person Prabhakar Reddy    schedule 10.05.2021
comment
какой у тебя разделитель?   -  person Prabhakar Reddy    schedule 10.05.2021
comment
Также как вы записываете данные в этот CSV через шланг. Похоже, CSV нельзя прочитать через Athena / SPARK / Glue. Можете ли вы попробовать написать без сжатия, чтобы убедиться, что это правильный CSV?   -  person Prabhakar Reddy    schedule 10.05.2021


Ответы (1)


Вам необходимо установить флаг сжатия, поскольку файлы Parquet сжимаются с помощью Snappy.

person Robert Kossendey    schedule 07.05.2021
comment
К сожалению, ошибка повторяется. Добавлено: storage_descriptor {compressed = true ... - person smjm; 07.05.2021
comment
для параметров в шаблоне уже включено сжатие - person Prabhakar Reddy; 07.05.2021