apache-spark - UDF 的 pyspark 中的返回类型无效

标签 apache-spark pyspark apache-spark-sql

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

TypeError: Invalid returnType: returnType should be DataType or str but is <'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 版本 3.5.3spark 版本 2.4.1

最佳答案

由于您直接使用 IntegerType 而不调用它会导致问题

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

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

关于apache-spark - UDF 的 pyspark 中的返回类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62379312/

相关文章:

apache-spark - 加载 Parquet 文件并保留相同数量的hdfs分区

scala - 在 Spark SQL 中将多个小表与一个大表连接起来的最佳方法

python - 使用多行选项和编码选项读取 CSV

apache-spark - 从谷歌云中的 spark worker 获取日志输出

python - pyspark更改日期时间列中的日期

apache-spark - 使用 zstd 压缩编解码器时 Spark 3.0.1 任务失败

python - PySpark/Python:将字典python输出转换为RDD/或其他可保存(HDFS)格式

hadoop - Mesos上的独立Spark集群访问其他Hadoop集群中的HDFS数据

apache-spark - 将Spark数据框保存到Hive : table not readable because "parquet not a SequenceFile"

json - 如何让 Spark 将 JSON 转义字符串字段解析为 JSON 对象以推断数据帧中的正确结构?