如果每个 csv 文件都将第一行作为标题,您可以在 athena 上使用以下语法在 Glue Catalog 中创建所需的表:
CREATE EXTERNAL TABLE IF NOT EXISTS {{tablename}} ({{headers}})
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ( 'escapeChar'='/', 'quoteChar'='\\"', 'separatorChar'=',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '{{location}}' TBLPROPERTIES ('skip.header.line.count'='1')"
将占位符 {{tablename}}、{{headers}} 和 {{location}} 替换为各自的值。
更好的解决方案是停止在 CSV 本身中生成标题行,然后您可以使用 athena 中的 CREATE EXTERNAL TABLE 命令或通过 Glue Crawler 将自己的架构/标题强加于其之上。