2017-04-18 88 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') 

由于架构转换将由您的元数据存储处理,因此这将工作正常。

相关问题