python - pyspark:仅基于 rdd 的操作

标签 python python-3.x pyspark bigdata rdd

我尝试仅使用基于 rdd 的操作。我有一个与此类似的文件;

0, Alpha,-3.9, 4, 2001-02-01, 5, 20
0, Beta,-3.8, 3, 2002-02-01, 6, 21
1, Gamma,-3.7, 8, 2003-02-01, 7, 22
0, Alpha,-3.5, 5, 2004-02-01, 8, 23
0, Alpha,-3.9, 6, 2005-02-01, 8, 27

首先,我将数据加载到 rdd 中,如下所示,

rdd = sc.textFile(myDataset)

然后我对每个原始文件中的第一个元素的不同元素感兴趣。意思是Alpha、Beta、Gamma。在这种情况下,我期望 3 个不同的元素。 这就是我所做的,

coll = [] # to collect the distinct elements
list_ = rdd.collect() # to get the list
for i in list_:
    result = myFun(i) # this function I created to process line by line and return a tuple.
    if result[1] not in coll:
        coll.append(result[1])

有没有更快/更好的方法来仅使用基于 rdd 的操作来做到这一点?

最佳答案

您可以将 mapdistinct 一起使用,如下所示:

rdd = sc.textFile('path/to/file/input.txt')
rdd.take(10)
#[u'0, Alpha,-3.9, 4, 2001-02-01, 5, 20', u'0, Beta,-3.8, 3, 2002-02-01, 6, 21', u'1, Gamma,-3.7, 8, 2003-02-01, 7, 22', u'0, Alpha,-3.5, 5, 2004-02-01, 8, 23', u'0, Alpha,-3.9, 6, 2005-02-01, 8, 27']

list_ = rdd.map(lambda line: line.split(",")).map(lambda e : e[1]).distinct().collect() 

list_
[u' Alpha', u' Beta', u' Gamma']

关于python - pyspark:仅基于 rdd 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58782255/

相关文章:

Python 3 中忽略的 Python 单元测试预期失败

pyspark - 查询末尾需要 foo

Python - 将行拆分为列 - csv 数据

java - 有没有一种简单的方法在 Java 中使用 OpenSSL BIO 对象,或者有其他选择吗?

python - 将 pandas DataFrame DatetimeIndex 延长 25 个工作日

linux - 简单的基本 Flask 应用程序中的权限错误权限被拒绝

python-3.x - 使用 python 连接到 AWS RDS Postgres 数据库

python - "normalize"将句子的数据帧转换为更大的单词数据帧

python - Tensorflow 2.0 stack() 引发未初始化的张量错误

python - 有效地将扁平字符串解析为嵌套字典