Python在spark中绘制地图
Python mapraduce in spark
我有一些文本,我必须用hadoop计算一些单词的计数(例如John和marry)。
在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();
我对所有行使用map函数,并为每个匹配写入数据。现在我想用Spark来做这件事,但我必须用python来写。我有一些代码:
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()
我的问题是,我只能记录一个返回的匹配(key,val),如何与第一个例子类似。感谢U。
如果您的问题是如何在映射阶段发出多个值。答案是将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(" ")
返回一系列字符串。
相关文章:
- 在谷歌地图上绘制位置数据库
- “可绘制地图”设置地图选项“纬度-经度”
- 使用复选框绘制多段线谷歌地图API3,不'不起作用
- Python在spark中绘制地图
- 使用Node js和D3实时绘制地图上的国家名称
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 谷歌地图API在Javascript中,绘制圆的半径
- 使用Raphael js直接在谷歌地图上绘制
- 谷歌地图/GMAP3 - 绘制从用户地理位置到已知目的地的路线 - 需要帮助
- 如何使用谷歌地图绘制已知路线 JavsScript API V3.
- Google Maps v3 API-在地图上绘制圆圈
- 用d3和topojson绘制一张地图
- 使用D3.js在地图上绘制点的最佳方式
- 如何在谷歌地图API中使用坐标数组绘制多边形
- 需要使用新数据重新绘制地图(与CartoDB.js结合使用)
- GoogleMaps和GeoIP:从IP获取Lat、Long并绘制地图
- 选择语言绘制地图& &;用图标显示几个区域
- Canvas只绘制地图上循环的最后一个元素
- 如何在这里绘制地图与这里地图Javascript 3 API
- 如何从像素阵列绘制地图