【问题标题】:How could I call a User defined function from spark sql queries in pyspark?如何从 pyspark 中的 spark sql 查询中调用用户定义的函数?
【发布时间】:2018-06-27 22:30:53
【问题描述】:

我需要从我的 spark sql 查询中调用一个函数。我试过 udf 但我不知道如何操作它。 这是场景:

# my python function example

def sum(effdate, trandate):
  sum=effdate+trandate
  return sum

我的 spark sql 查询是这样的:

spark.sql("select sum(cm.effdate, cm.trandate)as totalsum, name from CMLEdG cm ....").show()

这些行不是我的代码,但我将其作为示例进行说明。如何在 spark.sql(sql 查询) 中调用 sum 函数以获得结果? 您能否向我推荐任何与 pyspark 兼容的链接或任何评论?

任何帮助将不胜感激。

谢谢

卡利安

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql spark-dataframe


    【解决方案1】:

    检查一下

        >>> from pyspark.sql.types import IntegerType
        >>> sqlContext.udf.register("stringLengthInt", lambda x: len(x), IntegerType())
        >>> sqlContext.sql("SELECT stringLengthInt('test')").collect()
        [Row(_c0=4)]
    

    【讨论】:

      【解决方案2】:

      您只需要将您的函数注册为 UDF:

      from spark.sql.types import IntegerType()
      
      # my python function example
      def sum(effdate, trandate):
        sum=effdate+trandate
        return sum
      
      spark.udf("sum", sum, IntegerType())
      spark.sql("select sum(cm.effdate, cm.trandate)as totalsum, name from CMLEdG cm....").show()
      

      【讨论】:

        猜你喜欢
        • 2013-12-06
        • 2013-11-07
        • 2021-06-06
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 2014-09-21
        • 2012-08-29
        相关资源
        最近更新 更多