我需要在PySpark中的交叉联接数据集上运行一些UDF。我想我可以分两个步骤执行此操作:1>首先交叉连接2>对第一步的结果运行UDF。
在Hive中,可以通过将UDF与CROSS JOIN一起运行来一步完成。也许Hive在内部像PySpark这样分两个步骤执行(假设我的理解是正确的)?还是有办法在PySpark中做同样的事情?
答案 0 :(得分:1)
Spark的核心部分是用Java和Scala实现的。无论您使用的是Spark Scala API,Spark SQL还是PySpark,主要处理都在JVM中进行。
如果使用Python UDF之类的非本地UDF,则需要在内部执行额外的步骤,包括序列化UDF的输入数据,将数据移至Python,反序列化并在Python中运行UDF。然后,数据也将移回JVM。据我所知,没有办法避免这种情况。