Pig 0.12.0 - 从字符串中提取最后两个字符

时间:2016-04-18 15:44:55

标签: hadoop mapreduce apache-pig cloudera bigdata

我正在使用CDH 5.5Pig 0.12.0。我有chararray这样的:25 - 45我想从这个字符串中提取25和45。

所以,我这样做了:

minValue = (int)SUBSTRING(value,0,2);
maxValue = ((int)SUBSTRING(value,6,2);

我能够提取minValue但无法提取maxValue,即给定字符串的最后两个字符。

即使我尝试过,但这个也没有用。:

maxValue = ((int)SUBSTRING(value,-2,2);

请让我知道如何使这项工作。

2 个答案:

答案 0 :(得分:1)

您必须使用SUBSTRING函数中特定字符的索引。

这是你需要的。

maxValue = (int)SUBSTRING(value,5,7);

答案 1 :(得分:1)

如果deimeter始终是冒号( - ),那么我们可以拆分并展平chararray以提取最小值和最大值。

A = LOAD 'input.csv' USING PigStorage(',') AS (min_max:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(min_max,' - ',0)) AS (min_val:chararray, max_val:chararray);
DUMP B;

输入:

25 - 45
35 - 65
45 - 85

输出

(25,45)
(35,65)
(45,85)