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

Athena查询S3数据源返回行数多于实际值问题求助

Athena查询行数与S3实际CSV行数不符问题排查

我将数据源存储在S3中,使用Athena查询总行数时,结果比S3里CSV文件的实际行数多,还出现未知值导致数据不一致。已为Athena查询结果指定了和数据源文件夹不同的独立S3路径,恳请协助排查原因。

以下是创建Athena数据库和表的代码:

创建数据库

athena_client.start_query_execution(
    QueryString='create database cms_data',
    ResultConfiguration={'OutputLocation': 's3://cms-dashboard-automation/Athenaoutput/'}
)

创建外部表

context = {'Database': 'cms_data'}
athena_client.start_query_execution(
    QueryString='''CREATE EXTERNAL TABLE IF NOT EXISTS `cms_data`.`mpf_data` (
        `State` String,
        `County` String,
        `Org_Name` String,
        `Contract_ID` String,
        `Plan_ID` double,
        `Segment_ID` double,
        `Plan_Type_Desc` String,
        `Contract_Year` double,
        `Category_Name` String,
        `Service_Name` String,
        `Limit_Flag` double,
        `Authorization_Flag` double,
        `Referral_Flag` double,
        `Network_Description` String,
        `Cost_Share` String
    )
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    WITH SERDEPROPERTIES (
        'serialization.format' = ',',
        'field.delim' = ','
    ) LOCATION 's3://cms-dashboard-automation/MPF_Data/'
    TBLPROPERTIES ('has_encrypted_data'='false');''',
    QueryExecutionContext=context,
    ResultConfiguration={'OutputLocation': 's3://cms-dashboard-automation/Athenaoutput/'}
)

排查方向

  • CSV格式解析问题:LazySimpleSerDe无法正确处理字段内包含换行或引号的CSV,会把这类内容识别为新行。建议改用OpenCSVSerDe,修改表的ROW FORMAT配置:
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerDe'
    WITH SERDEPROPERTIES (
        "separatorChar" = ",",
        "quoteChar" = "\"",
        "escapeChar" = "\\"
    )
    
  • S3路径冗余文件:检查数据源路径s3://cms-dashboard-automation/MPF_Data/下是否存在隐藏文件(如.DS_Store)、Hadoop生成的_SUCCESS文件、临时上传文件等,这些文件会被Athena扫描计入总行数,需清理或排除。
  • 未跳过表头:如果CSV文件包含表头,Athena会将表头视为一行数据统计。可在表的TBLPROPERTIES中添加'skip.header.line.count'='1'来跳过第一行。
  • 数据类型不匹配:表中多个字段定义为double类型(如Plan_ID、Limit_Flag),若CSV对应字段存在非数值内容,解析时会产生异常行或错误值。建议检查这些字段的实际数据,必要时改为String类型。
  • 元数据未刷新:若S3数据有更新但表元数据未同步,会导致统计异常。执行MSCK REPAIR TABLE cms_data.mpf_data;刷新元数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:15:38