【问题标题】:Filter RDD based values in array using pyspark使用 pyspark 过滤数组中基于 RDD 的值
【发布时间】: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。 任何帮助表示赞赏。提前致谢。

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案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 列获取数据。如果可行,也将其标记为正确答案。谢谢
    • 谢谢。太棒了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多