Apache pig 是否可以使用pig在生成条件中强制转换长to字符串?

Apache pig 是否可以使用pig在生成条件中强制转换长to字符串?,apache-pig,Apache Pig,我有一堆长字串,有时是字符串“无穷大”或“NaN”。 假设A为记录,B为长: 我试过做 FOREACH A GENERATE (B is not null?B:-1) 尽管上面的说法并不准确,因为有时“B”显然是一个字符串。 是否有一些条件或复合条件来检查它是否为null,或者1)不是字符串,或者2)强制转换B,以便我可以确保它不为null,并且在条件中不以“NaN”开头 我的目标是将long转换为一个数字(如果是“NaN”,则为-1;如果不是,则保持不变) 如果存在,描述A将显示以下内容(如

我有一堆长字串,有时是字符串“无穷大”或“NaN”。 假设A为记录,B为长:

我试过做

FOREACH A GENERATE (B is not null?B:-1)
尽管上面的说法并不准确,因为有时“B”显然是一个字符串。 是否有一些条件或复合条件来检查它是否为null,或者1)不是字符串,或者2)强制转换B,以便我可以确保它不为null,并且在条件中不以“NaN”开头

我的目标是将long转换为一个数字(如果是“NaN”,则为-1;如果不是,则保持不变)

如果存在,描述A将显示以下内容(如果不存在,则显示NaN):

{ “B”:28.2524232
}

可能是这样的:

FOREACH A GENERATE (B is not null ? (B matches 'NaN' OR B matches 'INFINITY' ? -1 : (int) B):-1)
由于“NaN”和“INFINITY”pig可能会推断出比特雷或字符,请检查描述为GoBrewers14推荐

尽管您可以使用模式加载并将其指定为chararray,然后像我那样进行转换:)

注意:“B不为空”不应是必需的,但如果是;)

试试这个

首先以chararray格式加载长数据,然后对其执行条件,然后再转换回长数据。比如说,

A = load 'data_file' as (B:chararray);
result1 = FOREACH A GENERATE (B matches '(.*)NaN(.*)'?'-1':(B matches '(.*)INFINITY(.*)'?'-1':B)) as B;
result2 = FOREACH result1 GENERATE (long)B;

希望它能为我工作。

如果你用
描述一个
,这个关系是什么样子的?