Multi-frame ZSTD data in Athena

0

I've been trying to read some zstd data in Athena. The files are multi-frame, which is a feature that ZSTD format fully supports. In fact, a multi-frame file is simply a file created by concatenating individual ZSTD files. This approach works like a dream with GZ files, and Athena reads them without any hitches.

However, when I try the same with concatenated ZSTD files, I keep running into an error message that says, "GENERIC_INTERNAL_ERROR: Unknown frame descriptor."

These files are perfectly readable when I use a command-line tool.

smotrov@MacBook-Pro test_data % zstd -dvl default_US_YYY_bZfVhjMmdecpQew2wey8W.zst
*** Zstandard CLI (64-bit) v1.5.5, by Yann Collet ***
default_US_YYY_bZfVhjMmdecpQew2wey8W.zst 
# Zstandard Frames: 20
DictID: 0
Window Size: 4.00 MiB (4194304 B)
Compressed Size: 43.8 MiB (45957238 B)
Check: None

Has anyone encountered this issue before, and if so, any ideas on how to fix it?

profile picture
Smotrov
已提問 1 年前檢視次數 53 次
1 個回答
0

Besides this being a well documented bug you can work around by ensuring that the ZSTD compressed files are stored in a format that Athena supports natively, such as Parquet or ORC. Athena supports reading ZSTD compressed data in these formats.

When creating the table in Athena, specify the ZSTD compression in the table properties.

Example Athena CREATE TABLE statement for a Parquet table with ZSTD compression:

CREATE TABLE my_table (
  col1 INT,
  col2 STRING
)
STORED AS PARQUET
LOCATION 's3://my-bucket/my-data/'
TBLPROPERTIES (
  'parquet.compression' = 'ZSTD',
  'compression_level' = '5'
);
profile picture
專家
已回答 2 天前
  • Than you for your comment. But I do understand that Athena supports ZSTD. Moreover, I use it in production. My question is about Multi-frame ZSTD as it is mentioned in the title. Unfortunately, when you have data files with Multi-frame ZSTD this workaround will not help at all.

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南