【发布时间】:2016-08-22 19:44:08
【问题描述】:
假设我有一个 spark 数据框,
data.show()
ID URL
1 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed
2 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed
3 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed
4 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed
5 None
我想为它编写一个正则表达式操作,我想在其中解析特定场景的 URL。场景将是在 &q 之后和下一个 & 之前解析。我可以在 python 中为 python 数据框编写这个,如下所示,
re.sub(r"\s+", " ", re.search(r'/?q=([^&]*)', data['url'][i]).group(1).replace('+', ' ')
我想在 pyspark 中写同样的内容。
如果写类似的东西,
re.sub(r"\s+", " ", re.search(r'/?q=([^&]*)', data.select(data.url.alias("url")).collect()).group(1).replace('+', ' '))
或
re.sub(r"\s+", " ", re.search(r'/?q=([^&]*)', data.select(data['url']).collect()).group(1).replace('+', ' '))
我收到以下错误,
TypeError: expected string or buffer
一种选择是使用将数据转换为熊猫,
data.toPandas() 然后进行操作。但是我的数据很大,将其转换为 pandas 会使它变慢。有没有办法可以直接将其写入 spark 数据框中的新列,我可以喜欢,
ID URL word
1 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed To Be Parsed out
2 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed To Be Parsed out
3 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed To Be Parsed out
4 https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed To Be Parsed out
5 None None
我们如何才能将其添加为 pyspark 数据框中的新表?哪个适用于数据框的每一行?
【问题讨论】:
-
考虑使用 udf 和
withColumn或将您的数据框转换为 rdd 并使用map -
@David 我是 pyspark 的新手。刚认识这些。如果您不介意,可以请您帮忙使用地图功能吗?
标签: python python-2.7 apache-spark pyspark pyspark-sql