处理空数据类型
Handling Null DataType
我正在使用 Piggybank 的 Over 函数来获取行的延迟
res= foreach (group table by fieldA) {
Aord = order table by fieldB;
generate flatten(Stitch(Aord, Over(Aord.fieldB, 'lag'))) as (fieldA,fieldB,lag_fieldB) ;}
这工作正常,当我进行转储时,我得到了预期的结果,问题是当我想使用 lag_fieldB 进行任何比较或转换时,我遇到了数据类型问题。
如果我做一个描述 returns fieldA: long,fieldB: chararray,lag_fieldB: NULL
我是 PIG 的新手,但我已经尝试转换为 chararray 并使用 ToString(),但我不断收到如下错误:
错误 1052:无法将 bytearray 转换为 chararray
错误 1051:无法转换为字节数组
感谢您的帮助
好的,在查看 Over 函数的代码后,我发现您可以实例化 Over class 来设置 return 类型。对我有用的是:
DEFINE ChOver org.apache.pig.piggybank.evaluation.Over('chararray');
res= foreach (group table by fieldA) {
Aord = order table by fieldB;
generate flatten(Stitch(Aord, ChOver(Aord.fieldB, 'lag'))) as (fieldA,fieldB,lag_fieldB) ;}
现在描述告诉我
fieldA: long,fieldB: chararray,lag_fieldB: chararray
而且我能够按预期使用这些列,希望这可以为其他人节省一些时间。
我正在使用 Piggybank 的 Over 函数来获取行的延迟
res= foreach (group table by fieldA) {
Aord = order table by fieldB;
generate flatten(Stitch(Aord, Over(Aord.fieldB, 'lag'))) as (fieldA,fieldB,lag_fieldB) ;}
这工作正常,当我进行转储时,我得到了预期的结果,问题是当我想使用 lag_fieldB 进行任何比较或转换时,我遇到了数据类型问题。
如果我做一个描述 returns fieldA: long,fieldB: chararray,lag_fieldB: NULL
我是 PIG 的新手,但我已经尝试转换为 chararray 并使用 ToString(),但我不断收到如下错误:
错误 1052:无法将 bytearray 转换为 chararray
错误 1051:无法转换为字节数组
感谢您的帮助
好的,在查看 Over 函数的代码后,我发现您可以实例化 Over class 来设置 return 类型。对我有用的是:
DEFINE ChOver org.apache.pig.piggybank.evaluation.Over('chararray');
res= foreach (group table by fieldA) {
Aord = order table by fieldB;
generate flatten(Stitch(Aord, ChOver(Aord.fieldB, 'lag'))) as (fieldA,fieldB,lag_fieldB) ;}
现在描述告诉我
fieldA: long,fieldB: chararray,lag_fieldB: chararray
而且我能够按预期使用这些列,希望这可以为其他人节省一些时间。