pyspark中UDF的返回类型无效

时间:2020-06-14 23:22:56

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

我在pyspark中遇到一个奇怪的问题,我想在其中定义和使用UDF。我总是收到此错误:

TypeError:无效的returnType:returnType应该为DataType或str,但是为<'pyspark.sql.types.IntegerType'>

我的代码实际上非常简单:

from pyspark.sql import SparkSession
from pyspark.sql.types import IntegerType

def square(x):
    return 2

def _process():
    spark = SparkSession.builder.master("local").appName('process').getOrCreate()
    spark_udf = udf(square,IntegerType)

问题可能出在IntegerType上,但我不知道这有什么问题。我正在使用Python version 3.5.3spark version 2.4.1

1 个答案:

答案 0 :(得分:2)

由于您直接使用IntegerType却没有引起问题

def _process():
    spark = SparkSession.builder.master("local").appName('process').getOrCreate()
    spark_udf = udf(square,IntegerType())

尝试调用类型IntegerType(),它应该可以正常工作。