如何使用 pyspark 计算文件中的模式出现次数
How to count pattern occurrence in a file using pyspark
我有两个文件。一个大的有纯数据,一个有以行分隔的模式。
如何使用 map reduce 算法计算大文件中所有模式出现的次数,特别是在使用 python (pyspark) 的 Apache Spark
引擎中。
数据文件:
ABCDEFABCDERFADACCABCDEABA.....
模式文件:
ABC
BCF
CDE
如果你的PattenFile
很小(意思是适合你的主人,假设你正在使用一个集群),我会告诉你你需要什么的要点,我希望你完成它。请注意,我假设您已经将数据拆分为 DataFile
in trios.
加载两个文件。
data = sc.textFile("DataFile")
pattern = sc.textFile("PatternFile")
广播字典(patternFile
),正如你所说的 够小了
dictionary = pattern.collect()
broadcast_dictionary = sc.broadcast(dictionary)
过滤你的 data
.
data = data.filter(lambda x: x in dictionary.value)
作为对@Alberto Bonsanto 解决方案的补充,这里介绍了如何将数据分成三部分。不幸的是,pyspark 似乎没有提供 sliding
方法。手动编码相当麻烦。
dat0=flatMap(lambda x:list(x))
.zipWithIndex()
.filter(lambda (_,i): i>=0)
.groupBy(lambda (_,i): i/3).values()
.map(lambda x:
reduce(lambda y1,y2:
y1+''+y2,map(lambda (u,_):u,list(x))
)
)
此外,您还需要创建类似物 dat1
和 dat2
,其中 filter(lambda (_,i): i>=0)
被 filter(lambda (_,i): i>=1)
和 filter(lambda (_,i): i>=2)
替换,以便采取考虑到可能的偏移量。
我有两个文件。一个大的有纯数据,一个有以行分隔的模式。
如何使用 map reduce 算法计算大文件中所有模式出现的次数,特别是在使用 python (pyspark) 的 Apache Spark
引擎中。
数据文件:
ABCDEFABCDERFADACCABCDEABA.....
模式文件:
ABC
BCF
CDE
如果你的PattenFile
很小(意思是适合你的主人,假设你正在使用一个集群),我会告诉你你需要什么的要点,我希望你完成它。请注意,我假设您已经将数据拆分为 DataFile
in trios.
加载两个文件。
data = sc.textFile("DataFile") pattern = sc.textFile("PatternFile")
广播字典(
patternFile
),正如你所说的 够小了dictionary = pattern.collect() broadcast_dictionary = sc.broadcast(dictionary)
过滤你的
data
.data = data.filter(lambda x: x in dictionary.value)
作为对@Alberto Bonsanto 解决方案的补充,这里介绍了如何将数据分成三部分。不幸的是,pyspark 似乎没有提供 sliding
方法。手动编码相当麻烦。
dat0=flatMap(lambda x:list(x))
.zipWithIndex()
.filter(lambda (_,i): i>=0)
.groupBy(lambda (_,i): i/3).values()
.map(lambda x:
reduce(lambda y1,y2:
y1+''+y2,map(lambda (u,_):u,list(x))
)
)
此外,您还需要创建类似物 dat1
和 dat2
,其中 filter(lambda (_,i): i>=0)
被 filter(lambda (_,i): i>=1)
和 filter(lambda (_,i): i>=2)
替换,以便采取考虑到可能的偏移量。