如何为Spark优化用Java编写的UDF?

我用Java编写了一个UDF,我将其导出为Jar,然后在我的PySpark代码中使用它。

public class MyCustomLogic implements UDF1<WrappedArray<String>,String[]>,Serializable 
{
   private static final BigAIModel model = MyFactory.Loadmodel();

   @Override
   public String[] call(WrappedArray<String> rawTexts) {
        int length = rawTexts.length();
        String[] result = new String[length];

        // iterate over rawTexts and for each text
       {
          result[i] = model.ConvertText(rawText);
       }
   }
}

虽然我通过概要分析观察到的一件事是,当此代码在具有8个具有16个核心的工作程序的集群中运行时,udf函数需要更长的时间才能在1000个字符串的数组上执行,然后在集群中16名工人和8个核心。

是因为static model对象由每个工作程序中的所有执行者共享吗?并且由于上下文切换而需要更长的时间才能完成UDF?

如何优化UDF并提高性能?

qq928081068 回答:如何为Spark优化用Java编写的UDF?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3112888.html

大家都在问