繁体   English   中英

超过最大递归深度将pandas数据框转换为pyspark数据框

[英]maximum recursion depth exceeded converting pandas dataframe to pyspark dataframe

我是pyspark的新手,并学习从Beautiful汤bs4.element.Tag对象的列表创建pyspark数据框

table = bsoup.findAll(name='tr')
table = [tr.findAll(name='td') for tr in table]
table = [list(tr) for tr in table]

table
[[<td>City\n    </td>, <td>Country \n  </td>],
[<td>Paris</td>, <td>France</td>],
[<td>Amsterdam</td>, <td>Holland</td>]]

type(table[0][0])
bs4.element.Tag


spsession = SparkSession(sc)
spark_df = spsession.createDataFrame(table)

<path>/venv/lib/python2.7/site-packages/pyspark/sql/types.py in 
_infer_type(obj)
    967     else:
    968         try:
--> 969             return _infer_schema(obj)
    970         except TypeError:
    971             raise TypeError("not supported type: %s" % 
type(obj))

RuntimeError: maximum recursion depth exceeded

似乎在模式推断期间发生了问题,因为由于某种原因未推断出bs4.element.Tag类型

我通过从bs4.element.Tag对象而不是Tag提取的文本内容成功创建pyspark df来证实了这一点,并且一切正常。

有人可以解释为什么不推断出架构吗? 以及如何解决此错误并创建一个包含bs4.element.Tag对象的pyspark数据框?

ps我试图将递归限制增加到更高的值,但上面的错误仍然存​​在。 将递归限制增加到非常大的值会导致段错误。

我有一个类似的问题,在放入createDataFrame之前,我手动将bs4.element.Tag内容转换为字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM