gpt4 book ai didi

java udf 添加列

转载 作者:行者123 更新时间:2023-12-01 11:14:52 25 4
gpt4 key购买 nike

我正在编写java udf函数来通过比较位置列来添加pin码。这是我的代码。

  import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
import org.apache.commons.lang3.StringUtils;
public class MB_pincodechennai extends EvalFunc<String>
{
private String pincode(String input)
{
String property_pincode = null;
String[] items = new String[]{"600088", "600016", "600053", "600070", "600040", "600106", "632301", "600109", "600083", "600054", "600023", "600095", "600077", "600073", "600003", "603001", "600064", "600094", "600044", "600008",
};

for (String itm : items)
{
if (StringUtils.containsIgnoreCase(input, itm))
{
property_pincode = itm;
break;
}
}
return property_pincode;
}

public String exec(Tuple input) throws IOException
{
if (input == null || input.size() == 0)
return null;
try
{
String str = (String) input.get(0);
return pincode(str);
}
catch (Exception e)
{
return null;
}
}
}

该地区看起来像这个 adyar、tambaram、pallavaram、chromepet...

当我运行上面的代码时,它只打印空白值。我不知道我的错误在哪里。任何帮助将不胜感激。

最佳答案

如果您更改以下内容以返回“无效输入”。然后你会在 Pig Console 中得到无效的输入。

catch (Exception e)
{
return null; // Change this to return "Invalid Input"
}

原因:

问题是您正在尝试从 Pig 脚本传递 pincode=600073 (即整数)。并且您正在将其作为 Java UDF 中的字符串读取。这个转换不会起作用。

 MB_pincodechennai(pincode) -- pincode is passed as integer.

对于这个问题,你有2种方法;1) 您可以将 pincode 字段设置为 String 而不是 Pig 脚本中的 int。

2) 在进行匹配之前,您可以在 Java 端从 Integer 解析为 String。

String str = Integer.toString(input);

请查看映射以了解有关握手的更多详细信息: http://pig.apache.org/docs/r0.11.0/udf.html#udf-java

关于java udf 添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com