如何将 pyspark 列(pyspark.sql.column.Column)转换为 pyspark 数据框?

How to convert a pyspark column(pyspark.sql.column.Column) to pyspark dataframe?

我有一个用例来根据条件映射 pyspark 列的元素。 浏览此文档 pyspark column,我找不到 pyspark 列的函数来执行映射函数。

因此尝试使用 pyspark dataFrame 映射函数,但无法将 pyspark 列转换为数据帧

注意:我使用 pyspark 列的原因是因为我将其作为我使用的库(期望很高)的输入。

@column_condition_partial(engine=SparkDFExecutionEngine)
def _spark(cls, column, ts_formats, **kwargs):
    return column.isin([3])
    # need to replace the above logic with a map function
    # like column.map(lambda x: __valid_date(x))

_spark 函数参数从库中传递

我有什么,

带有时间戳字符串的 pyspark 列

我需要的,

基于验证时间戳格式的每​​个元素的布尔值 (True/False) 的 Pyspark 列

数据帧示例,

df.rdd.map(lambda x: __valid_date(x)).toDF()

__valid_date函数returnsTrue/False

所以,我需要将 pyspark 列转换为数据框才能使用上述映射函数,或者是否有任何映射函数可用于 pyspark 列?

看起来您需要 return 框架将用于验证的列对象。 我没有使用 Great expectations,但也许您可以定义一个 UDF 来转换您的列。像这样:

import pyspark.sql.functions as F
import pyspark.sql.types as T

valid_date_udf = udf(lambda x: __valid_date(x), T.BooleanType())

@column_condition_partial(engine=SparkDFExecutionEngine)
def _spark(cls, column, ts_formats, **kwargs):
    return valid_date_udf(column)