使用 pyspark 过滤数组中基于 RDD 的值
Posted
技术标签:
【中文标题】使用 pyspark 过滤数组中基于 RDD 的值【英文标题】:Filter RDD based values in array using pyspark 【发布时间】:2019-11-19 02:52:43 【问题描述】:使用 pypark (python3) 我正在尝试创建和过滤基于 RDD 的数组元素。
INCLUDE_CITIES = 'Philadephia','Buffalo','Syracuse'
...
...
...
rddFiltered = sc.textFile(fileLocation).filter(lambda line: line in INCLUDE_STATIONS)
print (rddFiltered.take(10))
仅当我从数组中找到城市时,我才希望内容位于 RDD 中。以上不是正确的语法,但我需要一些帮助。我现在想坚持使用 RDD,而不是使用 Datasets 或 DF。 任何帮助表示赞赏。提前致谢。
【问题讨论】:
【参考方案1】:这是因为您的文本文件存在问题或也许您没有将文本文件放入 HDFS(使用命令 hdfs dfs -put city.txt 将文本文件放入 HDFS主目录)
这个例子适合我
1) 创建一个文本文件
城市.txt
Varun,23,Buffalo
Trump,29,Syracuse
Obama,91,Phili
2) 将文本文件放入hdfs
hdfs dfs -put cities.txt
2) 运行代码
cities = 'Philadephia','Buffalo','Syracuse'
cities_from_file = sc.textFile("cities.txt").map(lambda line: line.split(",")[2]).filter(lambda city: city in cities)
cities_from_file.take(5)
[u'Buffalo', u'Syracuse']
【讨论】:
对不起@vi_ral。我没有使用 HDFS。这是在带有 Spark 和 Hadoop 的独立 EC2 实例上。 还有一点,输入的文本文件是逗号分隔的一行数据。城市在第 6 列。所以,我只想要那些具有第 6 列数组值的记录/行。 我编辑了我的代码,为了简单起见,我只包含了三列。编辑此代码,使其从第 6 列获取数据。如果可行,也将其标记为正确答案。谢谢 谢谢。太棒了。以上是关于使用 pyspark 过滤数组中基于 RDD 的值的主要内容,如果未能解决你的问题,请参考以下文章