首页 > 解决方案 > String vs Varchar Hive 查询性能

问题描述

我有这张表,有 5 条轧机记录,大约 25 列,其中大部分是字符串类型。当我进行查询时,获取结果大约需要 47 秒。每个 String 列都有 2 GB 的空间(因为我不知道如何减少该值),一列的最大长度记录大约是 32k 个字符,其他的则要少得多(7,18, 50)。

为了获得更好的查询性能,我复制了该表,但在所有 STring 列中,我对上述长记录使用了 Varchar(1000) 和 varchar(50000) 而不是 String 。我认为这会让我更快地获取,但这几乎需要两倍的时间。

据我了解,我使用 varchar 使用的空间更少,但不知何故这并没有发生。在相同的条件下,我是否应该使用 varchar 而不是 string 获得更好的响应?

标签: stringperformancehivehiveqlvarchar

解决方案


和之间不应该有任何性能差异stringvarchar但最佳选项用作字符串,varchar内部也存储为字符串。

这里有一些关于两者细节比较的优秀线程:

https://community.hortonworks.com/questions/48260/hive-string-vs-varchar-performance.html

Hive - Varchar vs String , 如果存储格式是 Parquet 文件格式有什么优势吗


推荐阅读