小编Ste*_*ven的帖子

将功能应用于Spark DataFrame中的所有单元格

我正在尝试将一些熊猫代码转换为Spark以进行缩放。myfunc是复杂API的包装,该API接受一个字符串并返回一个新字符串(这意味着我不能使用向量化函数)。

def myfunc(ds):
    for attribute, value in ds.items():
        value = api_function(attribute, value)
        ds[attribute] = value
    return ds

df = df.apply(myfunc, axis='columns')
Run Code Online (Sandbox Code Playgroud)

myfunc接收一个DataSeries,将其分解为单个单元格,为每个单元格调用API,并使用相同的列名构建一个新的DataSeries。这有效地修改了DataFrame中的所有单元格。

我是Spark的新手,我想使用来翻译此逻辑pyspark。我已经将熊猫DataFrame转换为Spark:

spark = SparkSession.builder.appName('My app').getOrCreate()
spark_schema = StructType([StructField(c, StringType(), True) for c in df.columns])
spark_df = spark.createDataFrame(df, schema=spark_schema)
Run Code Online (Sandbox Code Playgroud)

这是我迷路的地方。我需要UDF一个pandas_udf吗?如何遍历所有单元格,并为每个单元格返回一个新字符串myfuncspark_df.foreach()不返回任何东西,也没有map()函数。

我可以修改myfuncDataSeries- > DataSeriesstring> - string如果需要的话。

python pandas apache-spark apache-spark-sql pyspark

1
推荐指数
2
解决办法
3251
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

pandas ×1

pyspark ×1

python ×1