簡體   English   中英

Pyspark-調用空數據框時withColumn不起作用

[英]Pyspark - withColumn is not working while calling on empty dataframe

我正在為某些要求創建一個空的數據框,當我在其上調用withColumn函數時,我正在獲取列,但數據如下所示為null-

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"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM