什么格式适用于 Hive LazySimpleSerDe

问题描述

Hive LazySimpleSerDe 的具体格式是什么? 像 ParquetHiveSerDe 这样的格式告诉我 Hive 将读取 parquet 格式的 HDFS 文件

但什么是LazySimpleSerDe?鉴于 LazySimpleSerDe 用于分隔文件,为什么不将其称为 CommaSepHiveSerDeTabSepHiveSerDe 之类的明确名称

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...