首页 文章

如何从pyspark中的spark sql查询中调用用户定义的函数?

提问于
浏览
0

我需要从我的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兼容的链接或评论?

任何帮助,将不胜感激 .

谢谢

格利扬

2 回答

  • 0

    检查一下

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

    您只需要将您的函数注册为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()
    

相关问题