繁体   English   中英

使用pyspark将两个csv文件加入一个键值rdd

[英]Joining two csv files into a key-value rdd using pyspark

我正在尝试使用 pyspark 将两个没有共同点(没有键是常见的)的 csv 文件组合成一个键值对 rdd

假设 A.csv 有

a
b
c

和 B.csv 有

1
2
3

pyspark 中是否有一个选项可以通过加入这两个来获得 rdd,就像这样

a:1
b:2
c:3

当然,两个 csv 文件中的行数应该匹配。 这在 pyspark 中很容易,还是应该先在常规 python 中完成。 也就是说,对这两个文件进行嵌套循环,然后创建一个像 ((a,1),(b,2)...) 这样的元组元组,然后将其传递给并行化。

只是一个工具解决方案,展示了一般原理,但不关注你的具体数据结构:

with file('A.csv','r') as f:
    a = f.read().split('\n')
with file('B.csv','r') as f:
    b = f.read().split('\n')
dic = dict(zip(a,b))

如果你有更复杂的数据结构,你应该添加一个 CSV 解析器(例如标准 Python 库中的csv模块)

我正在为将来可能需要它的人写这篇文章。 我只是稍微修改了@sciroccorics 的代码

import os

with open("/dbfs/FileStore/tables/a.csv",'r') as f:
    a = f.read().split('\n')
with open("/dbfs/FileStore/tables/b.csv",'r') as f:
    b = f.read().split('\n')
tup = tuple(zip(a,b))
key_rdd = spark.sparkContext.parallelize(tup)

注意tuple(zip(a,b))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM