Impala 数据类型

Impala Data types

我正在尝试了解 Impala

中以下数据类型之间的区别
  1. 字符串
  2. 字符
  3. 可变字符

读取模式时需要 3 种不同的类型。我想知道在我们知道列长度上限的情况下,使用 Char/Varchars 而不是字符串是否有任何性能优势?

STRING 存储可变长度数据并且(本质上——当然,除了一些实际限制外)是无限的。

VARCHAR(x) 存储可变长度数据,上限为 x 个字符,因此数据将被截断为定义的长度。例如,如果您有 VARCHAR(10),您的输入数据的大小可以在 [0,10].

CHAR(x) 是 x 字符固定大小数据类型。如果数据比 x 短,则填充数据。如果数据比 x 长,数据将被截断。

VARCHARCHAR 都是在 Impala 2.0.0 (CDH 5.2.0) 中引入的,主要用于与其他数据库系统的兼容性。但是,不推荐使用 VARCHARCHAR,除非某些特殊用例(具有特定遗留系统),因为它们都有一些功能限制。

虽然 STRINGVARCHAR 之间应该有相似的性能,但 CHAR 有一些不同的特征:值得注意的是它不是代码生成的,因此通常性能会受到影响。但是,小 CHARs(其中 x < 128)在执行期间与元组一起存储,而不是像可变长度数据那样存储在辅助存储器中。

以上提供了这些类型之间的一些差异,但建议尽可能使用 STRING

有关详细信息,请参阅 STRING, VARCHAR, and CHAR 文档。