Spark 管道中的 UDF
Posted
技术标签:
【中文标题】Spark 管道中的 UDF【英文标题】:UDFs in Spark pipelines 【发布时间】:2018-02-12 13:07:26 【问题描述】:我在 python 中创建了一个 UDF 来计算表中两个日期列之间的日期数组并将其注册到 spark 会话。我在管道中使用此 UDF 来计算新列。
现在,当我将此管道保存到 HDFS 并期望它被读回以在不同的程序(使用不同的 spark 会话)中执行时,UDF 不可用,因为它没有在任何地方全局注册。由于该过程是通用的并且需要运行多个管道,因此我不想添加 UDF 定义并将其注册到那里的 spark 会话中。
我是否可以在所有 Spark 会话中全局注册 UDF?
我可以以某种简洁的可维护方式将其添加为依赖项吗?
【问题讨论】:
我看到你的问题,想问一下你是如何在管道中添加 udf 的? 我使用 SQLTransformer 创建基于 sql 的转换。如果我使用注册了 udf 的 spark 会话,那么我可以在 SQLTransformer 中使用 UDF 并将其放入管道中。 我在使用 udf 的“无法识别 %s 类型的管道阶段”时收到此错误。 % type(stage)) TypeError: 无法识别类型为我在尝试从 python 中保存并将其导入 scala 时遇到同样的问题。
我想我会使用 SQL 来做我想做的事。
我也看到了I could use python .py file in Scala,但我还没有找到在 UDF 转换器中使用它的方法。
1234563关心,因为我需要 做python => scala。【讨论】:
欢迎来到 Stack Overflow!如果您有新问题,请点击 按钮提出问题。如果您有足够的声誉,you may upvote 的问题。或者,将其“加星标”作为收藏夹,您将收到任何新答案的通知。以上是关于Spark 管道中的 UDF的主要内容,如果未能解决你的问题,请参考以下文章
在 Apache Spark 中通过管道运行 Windows 批处理文件