我正在使用BeautifulSoup和Pyspark爬网。我有一个包含20个链接的测试csv文件,我想在网站中提取链接。
links = spark.read.text("top-20.csv")
b = links.rdd.map(lambda link: crawl(link,depth))
爬网函数返回包含267个元素的列表。如果该行的末尾有toDF()。
b = links.rdd.map(lambda link: crawl(link,depth)).toDF()
然后使用该行。
output = b.collect()
函数抛出
java.lang.IllegalStateException: Input row doesn't have expected number of values required by the schema. 20 fields are required while 267 values are provided.
我不明白为什么它使用toDF()引发异常。当新值为267行时,为什么仍期望有20行?从rdd到df的转换显然不是必需的,但是我对它的工作方式很感兴趣。