如何将 PySpark 函数的返回类型指定为数据帧?

Eri*_*c J 4 python function dataframe pyspark

我最近正在解决一些编码挑战,涉及将 Spark 数据帧传递到 Python 函数并返回一个新的数据帧。我记得的语法是这样的:

def sampleFunction(df: Dataframe) -> Dataframe:
    * do stuff *
    return newDF
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试创建自己的示例,但无法将数据帧指定为输入/输出类型。我假设我需要导入一些东西来使 dataframe 成为可接受的类型,但在过去的一个小时里我一直在 Google 上搜索这个内容,但我找不到一个关于如何在 PySpark 中实现此功能的示例。

Nik*_*har 7

您需要DataFrame在代码中导入类型,并使用数据类型名称而DataFrame不是代码中提到的Dataframe

>>> from pyspark.sql import DataFrame
>>> def sampleFunction(df: DataFrame) -> DataFrame:
...     df1 = df.withColumn("necol", lit(1))
...     return df1
... 
>>> from pyspark.sql.functions  import *
>>> df.show()
+---------+----------+----------+
|DEVICE_ID|  MIN_DATE|  MAX_DATE|
+---------+----------+----------+
|        1|2019-08-29|2019-08-31|
|        2|2019-08-27|2019-09-02|
+---------+----------+----------+

>>> newdf = sampleFunction(df)
>>> newdf.show()
+---------+----------+----------+-----+
|DEVICE_ID|  MIN_DATE|  MAX_DATE|necol|
+---------+----------+----------+-----+
|        1|2019-08-29|2019-08-31|    1|
|        2|2019-08-27|2019-09-02|    1|
+---------+----------+----------+-----+
Run Code Online (Sandbox Code Playgroud)