如何计算ApachePig中字符串的长度?

xv8emn3q  于 2021-06-25  发布在  Pig
关注(0)|答案(4)|浏览(355)

在Pig身上 substring 函数有三个参数,我需要得到从第四个位置到字符串长度的子字符串。
所以我说:

substring(division,4,string.length(division))

它显示出错误 Could not resolve string.LENGTH using imports: . 如何在Pig身上找到绳子的长度?

9njqaruj

9njqaruj1#

SIZE() 内部调用的函数 String.length() 所以在你的情况下(正如弗雷德里克所说):

SUBSTRING(division,4,SIZE(division))
v1l68za4

v1l68za42#

早些时候提供的答复对我不适用。有效的方法是:

SUBSTRING(division,4,(int)SIZE(division))

注意 int 演员阵容。

ct2axkht

ct2axkht3#

我也犯了同样的错误。经过近一天的尝试,我找到了解决方案,解决方案是,你应该做以下代码,

REGISTER '/usr/local/piggybank.jar';
maindata = LOAD '/user/pig/storm/StormEvents_details-ftp_v1.0_d1950_c20170120.csv' using org.apache.pig.piggybank.storage.CSVExcelStorage(',','NO_MULTILINE','UNIX','SKIP_INPUT_HEADER');

B = foreach maindata generate (int)$20 as INJURIES_DIRECT,(int)$21 as INJURIES_INDIRECT,(int)$22 as DEATHS_DIRECT,(int)$23 as DEATHS_INDIRECT,(chararray)$24 as DAMAGE_PROPERTY,(int)$10 as YEAR,(chararray)$11 as MONTH_NAME,(int)$0 as BEGIN_YEARMONTH;
k = foreach B generate org.apache.pig.piggybank.evaluation.string.LENGTH(DAMAGE_PROPERTY) as len;

因此,如果您可以在这些代码中看到,您必须包含字段来代替属性。所以我们问题的解决办法是,

org.apache.pig.piggybank.evaluation.string.LENGTH(DAMAGE_PROPERTY) as len;

对于substring,你可以做这样的代码,你可以相应地改变它,你的字符串名,

substringdata = foreach B generate SUBSTRING(DAMAGE_PROPERTY,0,org.apache.pig.piggybank.evaluation.string.LENGTH(DAMAGE_PROPERTY)-1) as substr;

我认为应该解决这个问题。

j13ufse2

j13ufse24#

你可以用这个尺寸。
子字符串(除法,4,大小(除法))

相关问题