You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Amazon Athena将S3中的CSV文件转为Parquet格式且无需使用Amazon EMR?

方案完全可行!我有多次实践经验

Absolutely feasible! I’ve implemented this exact workflow for several clients who wanted to optimize their S3 data storage and query performance without the overhead of managing EMR clusters. Let me break down how it works and share some practical lessons:

Is this approach possible?

Yes, 100%! Amazon Athena’s CREATE TABLE AS SELECT (CTAS) statement is designed for exactly this kind of data transformation. You don’t need any additional services like EMR—Athena handles all the compute behind the scenes to convert your CSV data to Parquet and write it back to S3.

Step-by-step implementation

Here’s the standard workflow I use:

  1. Create an external table pointing to your source CSV data
    First, you need to define a table in Athena that maps to your CSV files in S3. This tells Athena how to read the data. Example query:

    CREATE EXTERNAL TABLE IF NOT EXISTS my_source_csv_table (
        id INT,
        name STRING,
        timestamp TIMESTAMP,
        value DOUBLE
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    STORED AS TEXTFILE
    LOCATION 's3://your-source-bucket/csv-data/'
    TBLPROPERTIES ('skip.header.line.count'='1'); -- Use this if your CSV has a header row
    
  2. Use CTAS to convert and write Parquet data to S3
    Next, run a CTAS query to select data from the CSV table and write it as Parquet to your target S3 location. You can also add optimizations like compression or partitioning here:

    CREATE TABLE my_target_parquet_table
    WITH (
        format = 'PARQUET',
        external_location = 's3://your-target-bucket/parquet-data/',
        compression = 'SNAPPY', -- Recommended for balance of storage and performance
        partitioned_by = ARRAY['date'] -- Optional: partition by a field to speed up queries
    ) AS
    SELECT 
        id,
        name,
        timestamp,
        value,
        DATE(timestamp) AS date -- Derive partition field if needed
    FROM my_source_csv_table;
    
  3. (Optional) Create a persistent external table for the Parquet data
    The CTAS table above is a "managed table" by default. If you want more control (like retaining data even if you delete the table), you can create an external table pointing to the Parquet files:

    CREATE EXTERNAL TABLE IF NOT EXISTS my_parquet_external_table (
        id INT,
        name STRING,
        timestamp TIMESTAMP,
        value DOUBLE
    )
    PARTITIONED BY (date DATE)
    STORED AS PARQUET
    LOCATION 's3://your-target-bucket/parquet-data/';
    
    -- Load partitions (run this if you used partitioning)
    MSCK REPAIR TABLE my_parquet_external_table;
    

Practical lessons from hands-on experience

  • Partition early, partition smart: If your data has time-based or categorical fields (like date, region), partitioning during the CTAS step will drastically reduce future query costs and latency. Athena only scans relevant partitions instead of the entire dataset.
  • Validate source data first: I’ve had CTAS jobs fail because of malformed CSV rows (e.g., missing fields, incorrect data types). Run a quick SELECT * FROM my_source_csv_table LIMIT 100 or SELECT COUNT(*) WHERE value IS NULL to catch issues upfront.
  • Watch your costs: Athena charges based on the amount of data scanned. For large CSV datasets, consider splitting the conversion into smaller batches (e.g., by date partition) to spread out costs and avoid hitting query limits.
  • Check permissions: Make sure the Athena service role has s3:PutObject access to your target bucket and s3:GetObject access to the source bucket. Also, ensure it has permissions to write to the Glue Data Catalog if you’re using it.
  • Compression is worth it: SNAPPY compression reduces storage costs by ~50-70% for most datasets, and Athena reads compressed Parquet files just as fast as uncompressed ones. Don’t skip this!

内容的提问来源于stack exchange,提问作者Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:31:18