addrparser
addrparser copied to clipboard
运行报错JSONException: syntax error, expect ], actual string
运行的时候报错如下: FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments ''116.633366'': Unable to instantiate UDF implementation class com.LatLngParseAdr: com.alibaba.fastjson.JSONException: syntax error, expect ], actual string org.apache.hadoop.hive.ql.parse.SemanticException: Line 1:7 Wrong arguments ''116.633366'': Unable to instantiate UDF implementation class com..LatLngParseAdr: com.alibaba.fastjson.JSONException: syntax error, expect ], actual string
请问知道是什么原因吗
根据的你报错,猜测你是实现了一个hive的UDF,然后使用addrparser是吗? 请提供更详细的说明,比如UDF的代码
根据的你报错,猜测你是实现了一个hive的UDF,然后使用addrparser是吗? 请提供更详细的说明,比如UDF的代码 对,我是想弄成hive 的udf,代码如下: import org.apache.hadoop.hive.ql.exec.UDF; import tech.spiro.addrparser.common.RegionInfo; import tech.spiro.addrparser.io.RegionDataInput; import tech.spiro.addrparser.io.file.JSONFileRegionDataInput; import tech.spiro.addrparser.parser.Location; import tech.spiro.addrparser.parser.LocationParserEngine; import tech.spiro.addrparser.parser.ParserEngineException;
public class LatLngParseAdrInfo extends UDF {
public LocationParserEngine engine;
public LatLngParseAdrInfo() { try { String path = "china-region.json"; System.out.println("*****************:" + path); RegionDataInput regionDataInput = new JSONFileRegionDataInput(path); engine = new LocationParserEngine(regionDataInput); engine.init(); } catch (ParserEngineException e) { e.printStackTrace(); System.out.println("init local resource file failed....."); } }
public String evaluate(String lat, String lng) { try { double lat_d = Double.parseDouble(lat); double lng_d = Double.parseDouble(lng); return getLocation(lat_d, lng_d); } catch (NumberFormatException e) { e.printStackTrace(); return null; }
}
public static void main(String[] args) { String lat = "32.038634"; String lng = "118.750934"; // new LatLngParseAdr().getLocation(lat,lng); new LatLngParseAdrInfo().evaluate(lat, lng); }
public String getLocation(double lat, double lng) { try { Location location = engine.parse(lng, lat); RegionInfo provInfo = location.getProv(); RegionInfo cityInfo = location.getCity(); RegionInfo districtInfo = location.getDistrict(); String res = provInfo.getName() + "," + cityInfo.getName() + "," + districtInfo.getName(); System.out.println(res); return res; } catch (Exception e) { return null; } } }