【发布时间】:2021-10-08 21:27:34
【问题描述】:
我正在编写一个 Java Spark 应用程序,并且我正在尝试为我的一个 UDF 编写一个单元测试。此 UDF 接受字符串数组并返回 Long:
protected UDF1<WrappedArray<String>, Long> convertMyArray() {
return (WrappedArray<String> s) -> {
return ...;
};
}
当我使用 Spark 会话对其进行测试时,逻辑工作正常。我的问题是我如何unittest 这个逻辑。
@Test
public void arrayConversion() throws Exception {
ArrayList<String> inputName = new ArrayList<String>() {
{
add("Inp1");
add("Inp2");
}
};
assertEquals(5, myUDF.convertMyArray().call(...);
}
如何将inputName 转换为 wappedArray。由于输入不匹配,我不能简单地将 inputName 传递到我的 UDF 调用中。
我也尝试过基于WrappedArray.scala::Make使用make
WrappedArray<String> stringInput = WrappedArray.make(inputName);
但我仍然遇到运行时错误:
scala.MatchError: [Inp1, Inp2] when using make
【问题讨论】:
-
WrappedArray.scala 中的伴随对象有一个
make方法。该方法是否显示在您的设置中? -
@aksappy 我得到 scala.MatchError: [Inp1, Inp2] when using make
标签: java scala apache-spark