在AWS Glue中通过CloudFormation建表时理解SerDe相关内容
关于AWS CloudFormation中Glue表SerDe配置的清晰说明
核心概念
SerDe是Serializer/Deserializer的缩写,是Glue用来实现「数据格式与表结构映射」的核心组件——写入数据时把表结构序列化成存储格式,读取数据时把存储格式反序列化成表结构。
CloudFormation中Glue表的SerDe关键配置
在AWS::Glue::Table资源的StorageDescriptor节点下,SerDe相关配置分为以下核心部分:
SerdeInfo:SerDe的核心配置块,包含三个关键属性:Name:自定义的SerDe标识名(可选,仅用于识别)SerializationLibrary:必须指定的SerDe库,常见选项:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe:处理CSV、TSV等分隔符类文本格式org.openx.data.jsonserde.JsonSerDe:处理JSON格式com.amazonaws.glue.serde.GlueParquetSerDe:处理Parquet列式存储格式
Parameters:针对不同SerDe的自定义参数,比如分隔符格式需指定field.delim(字段分隔符),JSON格式可指定ignore.malformed.json忽略非法JSON行
InputFormat/OutputFormat:与SerDe配套的输入输出格式类,需和SerDe库对应:- 用LazySimpleSerDe处理CSV时,对应
org.apache.hadoop.mapred.TextInputFormat(输入)、org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat(输出) - 用GlueParquetSerDe时,对应
org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat(输入)、org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat(输出)
- 用LazySimpleSerDe处理CSV时,对应
实际配置示例(CSV格式)
Resources: MyGlueCsvTable: Type: AWS::Glue::Table Properties: CatalogId: !Ref AWS::AccountId DatabaseName: my-glue-database TableInput: Name: user_data_table StorageDescriptor: Columns: - Name: user_id Type: int - Name: user_name Type: string - Name: register_time Type: timestamp Location: s3://my-data-bucket/user-csv-data/ InputFormat: org.apache.hadoop.mapred.TextInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat SerdeInfo: Name: CsvUserSerDe SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Parameters: field.delim: "," serialization.format: ","
常见注意事项
SerdeInfo与InputFormat/OutputFormat必须匹配,比如用JSON SerDe时不能搭配仅支持文本行的输入格式,否则会出现解析异常Parameters的参数需严格对应所选SerDe库的要求,比如LazySimpleSerDe还支持collection.delim(数组元素分隔符)、mapkey.delim(Map键值分隔符)等配置
内容的提问来源于stack exchange,提问作者trimbljk
相关产品推荐
相关产品推荐

