var str = "what does Spark do is what you want to do".split(' ');
var result = {};
var word;
for (var i = 0; i < str.length; i++) {
word = str[i];
result[word] = result[word] ? result[word] + 1 : 1;
}
console.log(result);
Map |
word
=>
(word: 1)
|
Reduce |
(word1: 1, word2: 1)
+ (word2: 1, word3: 1) =>
(word1: 1, word2: 2, word3: 1)
|
var result = "what does Spark do is what you want to do"
.split(' ')
.map(v => new Object({[v]: 1}))
.reduce(function(v1, v2) {
for (word in v2) {
v1[word] ? v1[word] += v2[word] : v1[word] = v2[word]
}
return v1;
});
console.log(result);
var result = "what does Spark do is what you want to do"
.split(' ')
.map(v => [v, 1])
.reduceByKey((a, b) => a + b);
console.log(result);
日志适配器处理日志的原理是去匹配日志的一些特征,若符合一定规则,则认为是目标日志,将对这条日志进行分析,并输出新的日志。
|
|
立项 | 在服务器资源少量的情况下,不要尝试使用Spark代替常规运算程序,Spark将会花费大量的时间在资源调度和IO上,服务器也有部分资源需要供给JVM和GC。 |
编码 | 时刻牢记程序将运行在分布式环境下,不要随意传递对象给函数,这有时候会导致程序在单机时可以运行,集群下运行失败。也要慎用广播,序列化编解码过程将花费大量时间。 |
重构 | 改进程序本身永远比无脑扩展集群规模要有效得多,熟练组合使用Spark的各类RDD转化和动作将大大减少运算时间。 |
维护 | 注意使用Web UI查看程序错误,也要定期关注集群健康度,必要时扩展集群规模。可以使用Ganglia之类的集群监控系统对结点健康状况进行监控。 |
SELECT parameter.col AS col_out, sum(arr) AS sum_out
FROM SOURCE
WHERE path LIKE @'(/api/v\d+|)/videos/(?<video_id>\d+)/view/?'