【问题标题】:What format applies to the Hive LazySimpleSerDe什么格式适用于 Hive LazySimpleSerDe
【发布时间】:2021-09-12 16:48:44
【问题描述】:
Hive LazySimpleSerDe 的格式到底是什么?
像 ParquetHiveSerDe 这样的格式告诉我 Hive 将以 parquet 格式读取 HDFS 文件。
但是LazySimpleSerDe 是什么?既然 LazySimpleSerDe 用于分隔文件,为什么不将其称为 CommaSepHiveSerDe 或 TabSepHiveSerDe 之类的明确名称?
【问题讨论】:
标签:
csv
hive
hive-serde
hiveddl
lazysimpleserde
【解决方案1】:
LasySimpleSerde - 快速简单的 SerDe,它不识别带引号的值,虽然它可以使用不同的分隔符,不仅是逗号,默认为 TAB (\t)。您可以在 DDL 表中指定STORED AS TEXTFILE,然后将使用LasySimpleSerDe。对于带引号的值,使用OpenCSVSerDe,它没有LasySimpleSerDe 快,但可以正常使用带引号的值。
为了性能,LasySimpleSerDe 很简单,它也以惰性的方式创建对象,以提供更好的性能,这就是为什么在可能的情况下最好(对于文本文件)。
请参阅此示例,使用管道分隔 (|) 文件格式:https://stackoverflow.com/a/68095278/2700344
show create table 此类表的命令将 serde 类打印为 org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,STORED AS TEXTFILE 是 shortcut。