gpt4 book ai didi

python - Pyspark - withColumn 在调用空数据框时不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:57 25 4
gpt4 key购买 nike

我正在为某些要求创建一个空数据框,当我在其上调用 withColumn 函数时,我得到了列,但数据为空,如下所示-

schema = StructType([])
df = sqlContext.createDataFrame(sc.emptyRDD(), schema)
json = list(map(lambda row: row.asDict(True), df.collect()))
df.show()

++
||
++
++

df= df.withColumn('First_name',F.lit('Tony'))\
.withColumn('Last_name',F.lit('Chapman'))\
.withColumn('Age',F.lit('28'))
df.show()

+----------+---------+---+
|First_name|Last_name|Age|
+----------+---------+---+
+----------+---------+---+

这是什么原因?如何解决?

最佳答案

这是预期的结果 - withColumn 意味着 spark 将迭代所有行,然后为每一行添加一列。由于您的数据框是空的,因此没有任何可迭代的内容

如果你想将一些数据放入数据框中,你需要使用并行化

from pyspark.sql import Row
l = [('Tony','Chapman',28)]
rdd = sc.parallelize(l)
rdd_rows = rdd.map(lambda x: Row(First_Name=x[0],Last_Name=x[1] Age=int(x[2])))
df = sqlContext.createDataFrame(rdd_rows)

或者从 Spark 2.0(感谢 pault)你可以跳过 rdd 创建

l = [('Tony','Chapman',28)]
df = sqlContext.createDataFrame(l, ["First_Name", "Last_Name", "Age"]

关于python - Pyspark - withColumn 在调用空数据框时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com