我正在编写一个javaudf来处理一个数组类型的列。
其目的是处理字符串数组以选择长度最短的字符串
sqlContext.udf().register("NAME_SELECTOR", (UDF1<List<String>, String>) brandNames -> {
brandNames.sort(Comparator.comparing(String::length));
return brandNames.get(0);},DataTypes.StringType);
错误与udf函数的输入类型有关。我知道在scala我需要 Seq[String]
作为输入类型,java如何?
以下是错误消息: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to java.util.List
1条答案
按热度按时间cigdeys31#
试试这个-
使用
scala.collection.mutable.WrappedArray
并使用JavaConverters
然后使用比较器对其进行排序并获取第一个最短的字符串-如果你在
spark>=2.4
使用高阶函数来获得相同的结果without udf
如下所示-