我的蜂巢表结构如下-
create table sessionize_data (
ip string
cookie string
userid string
dattime string
timestamp bigint
referrer string
request string
useragent string
absoluteips string
xff string
calltype string
url string
unique_visitor string
referrer_url string
referrer_dqp map<string,string>
dqp map<string,string>
params map<string,string>
events_subcategory map<string,string>
session_id string
source string
dwelltime string
traffic string
viewdate string );
现在,我想将spark UDF中的 param maps 列作为参数传递-我使用以下代码进行了操作-
spark.udf().register("populateUrl",
new UDF3 < HashMap < String, String > , String, String, HashMap < String, String >> () {
private static final long serialVersionUID = 1 L;
@Override
public HashMap < String, String > call(HashMap < String, String > params, String url_type, String source)
throws Exception {
// some operation here
return params;
}
}, DataTypes.StringType);
当我使用上面的代码时,它为Map类型给出了类型错误。 有人可以建议如何构建接受地图类型列并返回地图类型列的 JAVA spark udf 。 谢谢。
答案 0 :(得分:0)
根据_Spark SQL Programming Guide,MapType
的外部类型为java.util.Map
,因此您应实现:
UDF3<java.util.Map<String, String>, String, String, java.util.Map<String, String>>