Apache spark 不要使用Spark RDD';s是否有类似于set的东西允许快速查找?

Apache spark 不要使用Spark RDD';s是否有类似于set的东西允许快速查找?,apache-spark,pyspark,Apache Spark,Pyspark,我有一些成对的数据,比如 data = [(3,7), (2,4), (7,3), ...] 这些对应于我想要构建的图中的连接。我只想保留其反向对包含在数据中的对,并且每个对只保留一个副本。例如,在上面的数据中,我想要[(3,7)],因为反向((7,3))也在数据中 在Python中,我将执行以下操作: pairs = set(data) edges = [p for p in pairs if p[0] < p[1] and (p[1], p[0]) in pairs] pairs=

我有一些成对的数据,比如

data = [(3,7), (2,4), (7,3), ...]
这些对应于我想要构建的图中的连接。我只想保留其反向对包含在数据中的对,并且每个对只保留一个副本。例如,在上面的数据中,我想要[(3,7)],因为反向((7,3))也在数据中

在Python中,我将执行以下操作:

pairs = set(data)
edges = [p for p in pairs if p[0] < p[1] and (p[1], p[0]) in pairs]
pairs=set(数据)
边=[p对于p成对,如果p[0]
我可以在Spark上做类似的事情吗?我能得到的最接近的方法是创建一个新的RDD,将对反转,与原始数据进行交集,并根据正在排序的对元素进行过滤,但这似乎效率低下。


这也可以工作

您是否尝试运行此功能?这给出了[(3,7),(2,4)],但我指定了期望的结果是[(3,7)]。
rdd = sc.parallelize([(3, 7), (2, 4), (7, 3)]) \
    .map(lambda x: ((min(x), max(x)), [x])) \
    .reduceByKey(lambda x, y: x + y) \
    .filter(lambda x: len(x[1]) > 1) \
    .map(lambda x: x[0])