最大递归深度超出了将pandas数据帧转换为pyspark数据帧的范围



我是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>Cityn    </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对象而不是Tags中提取的文本内容成功地创建了pyspark-df来证实这一点,一切都很好。

有人能解释一下为什么没有推断出这个模式吗?如何修复此错误并创建包含bs4.element.Tag对象的pyspark数据帧?

p.s我尝试将递归极限增加到更高的值,但上述错误仍然存在。将recursionlimit增加到一个非常大的值会导致seg故障。

我遇到了类似的问题,在放入createDataFrame之前,我手动将bs4.element.Tag内容强制转换为字符串

相关内容

  • 没有找到相关文章

最新更新