2017-04-18 89 views
0

寫作沒有屬性「toordinal」在表中同時包括架構未能在PySpark與Python 3錯誤「海峽」對象在PySpark

這裏是正在工作的步驟。

a = sc.textFile("ad_actions.csv") 
b = a.map(lambda x: x.split('||')).toDF() 
b.write.saveAsTable('AD_ACTIONS', mode='append') 

但是,如果我嘗試添加的架構,它是失敗的:

a = sc.textFile("ad_actions.csv") 
b = a.map(lambda x: x.split('||')).toDF(schema=sqlContext.table("AD_ACTIONS").schema) 
b.write.saveAsTable('AD_ACTIONS', mode='append') 

AttributeError: 'str' object has no attribute 'toordinal'

有任何影響,你知道我怎麼能解決這個問題? 你需要看什麼嗎?

+0

邏輯似乎沒有任何問題。你的數據看起來像什麼樣,後期樣本。 – Pushkr

回答

1

此問題意味着您要添加不屬於數據的架構。

問題:

AttributeError: 'str' object has no attribute 'toordinal'

就是說你想投你的字符串序號。這是date的一項功能。

因此,問題是您無法將數據轉換爲您想要的模式。

我建議你,只取名稱的列。像這樣:

a = sc.textFile("ad_actions.csv") 
b = a.map(lambda x: x.split('||')).toDF(sqlContext.table("AD_ACTIONS").schema.names) 
b.write.saveAsTable('AD_ACTIONS', mode='append') 

由於架構轉換將由您的元數據存儲處理,因此這將工作正常。

相關問題