- 以下代碼將資料從 csv 檔案加載到 dataframe
df中。myTable與此對應的 SQL 表df已經存在,資料將從該 df 匯入 myTable。 - myTable 有幾列。Column5 和 Column6 存在于 myTable 中并且是
calculated列。但是這些列在 csv 檔案中不存在。 - Column5 的值是根據 Column1 中的值計算得出的。并且 Column6 的值是根據 Column5 的計算值計算的。這些值分別由 testFunction1 和 testFunction2 計算。
- 該代碼適用于 Column5。但是在下面代碼的最后一行拋出以下錯誤
.withColumn("Column6", newFunction2(df.Column5))。
問題:我在這里可能做錯了什么。以及我們如何修復錯誤。注意:如果我從 myTable 中洗掉 Column6,并洗掉下面代碼的最后一行,則代碼成功地將資料加載到 myTable 中,其中 column5 中的資料填充(按預期)使用來自 Column1 的計算值。
錯誤:
AttributeError:“DataFrame”物件沒有屬性“Column6”
代碼:
from pyspark.sql.types import StringType
from pyspark.sql import functions as F
df = spark.read.csv(".......dfs.core.windows.net/myDataFile.csv", header="true", inferSchema="false")
def testFunction1(Col1Value):
#do some calculation on column1 value and return it to column5
return mystr1
def testFunction2(value):
# do some calculation on column5 value and return it to column6
return mystr2
newFunction1 = F.udf(testFunction1, StringType())
newFunction2 = F.udf(testFunction2, StringType())
df2 = df.withColumn("Column5", newFunction1(df.Column1)) \
.withColumn("Column6", newFunction2(df.Column5))
uj5u.com熱心網友回復:
問題是當您創建 df2. 您正在讀取資料框 (df) 并創建列“Column5”。然后參考第二行的列。但是 df 中尚不存在“Column5”。如果你把最后一部分分成兩個陳述句,如下面的代碼,它應該可以解決問題:
df2 = df.withColumn("Column5", newFunction1(df.Column1))
df3 = df2.withColumn("Column6", newFunction2(df.Column5))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483418.html
標籤:Python sql服务器 阿帕奇火花 pyspark 天蓝色 sql 数据库
