作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些文字,我必须计算使用hadoop的某些单词(例如,John和已婚)的数量。
在Java脚本中,我可以这样写:
require('timothy').map(function(line){
emit("count", 1);
if(new RegExp("john", "i").test(line)) emit("John", 1);
if(new RegExp("marry", "i").test(line)) emit("Marry", 1);
}).reduce(function(key, values){
var result = 0;
values.forEach(function(value){
result += +value;
});
emit(key, result);
}).run();
import sys
import re
from operator import add
from pyspark import SparkContext
if __name__ == "__main__":
if len(sys.argv) != 2:
print >> sys.stderr, "Usage: wordcount <file>"
exit(-1)
sc = SparkContext(appName="PythonWordCount")
lines = sc.textFile(sys.argv[1], 1)
def map(line):
#here must contains map function;
counts = lines.map(map).reduceByKey(add)
output = counts.collect()
for (word, count) in output:
print "%s: %i" % (word, count)
sc.stop()
最佳答案
如果您要问的是我如何在 map 阶段发出多个值。答案是将flatMap
运算符与返回一个值序列而不是单个值的函数一起使用。该序列将由flatMap转换拆分。例如:
file = spark.textFile("file://...")
counts = file.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)
line.split(" ")
返回一个字符串序列。
关于javascript - Spark 中的Python mapraduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415327/
我有一些文字,我必须计算使用hadoop的某些单词(例如,John和已婚)的数量。 在Java脚本中,我可以这样写: require('timothy').map(function(line){
我是一名优秀的程序员,十分优秀!