【发布时间】:2013-04-20 15:50:43
【问题描述】:
我有以下问题... 我使用 Hive 并想添加一个包含几行(不同)字符串的文件。那些包含固定大小的字段,如下所示:
A20130420bcd 34 fgh
其中字段的长度为 1,8,6,4,3。 分开它看起来像这样:
“A,20130420,bcd,fgh”
除了将它作为每个字段的子字符串(例如
)之外,是否有可能读取字符串并将其排序到一个字段中substring(col_value,1,1) Field1
等等? 我想切割字符串中已读取的部分会提高性能,但我可以想出任何方法来使用给定的函数here 做到这一点。
其次,如前所述,有不同类型的字符串,由第一个字符排序和标识。现在只需使用 WHERE 语句检查这些字符串,但这很可怕,因为它遍历整个文件只是为了找到第一个字符串。有什么方法可以通过编号读取特定行吗?如果我知道,第一个字符串将是某种类型,可以直接读取吗?
没错,它看起来像这样:
insert overwrite table TEST
SELECT
substring(col_value,1,1) field1,
...
substring(col_value,10,3) field 5
from temp_data WHERE substring(col_value,1,1) = 'A';
对此有什么想法吗?
我很想听听一些想法 =)
【问题讨论】:
-
Hive 0.10.0.21,有人吗?
-
除了检查特定字段之外,还必须有某种方法通过索引来处理单行?
-
您担心多个
substring操作和全表扫描对性能的影响?这就是我们所说的 Hive,对吧?如果性能有问题,只需向集群添加更多节点。