我正在寻找一些更好的解释python中通过spark提供的聚合功能.
我的例子如下(使用Spark 1.2.0版本的pyspark)
sc.parallelize([1,2,3,4]).aggregate(
(0, 0),
(lambda acc, value: (acc[0] + value, acc[1] + 1)),
(lambda acc1, acc2: (acc1[0] + acc2[0], acc1[1] + acc2[1])))
Run Code Online (Sandbox Code Playgroud)
输出:
(10, 4)
Run Code Online (Sandbox Code Playgroud)
我得到的预期结果(10,4)
是1+2+3+4
4个元素的总和.如果我改变传递给聚合函数初始值(1,0)
从(0,0)
我得到以下结果
sc.parallelize([1,2,3,4]).aggregate(
(1, 0),
(lambda acc, value: (acc[0] + value, acc[1] + 1)),
(lambda acc1, acc2: (acc1[0] + acc2[0], acc1[1] + acc2[1])))
Run Code Online (Sandbox Code Playgroud)
输出:
(19, 4)
Run Code Online (Sandbox Code Playgroud)
该值增加9.如果我将其更改为(2,0)
,则值将转到(28,4)
依此类推.
有人可以向我解释这个值的计算方法吗?我预计价值会上升1而不是9,(11,4)
我预计会看到(19,4)
.
我有一个关于Kubernetes YAML字符串操作的问题.
我需要根据部署的容器的主机名设置一个env变量,并为这个变量附加一个端口号.
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Run Code Online (Sandbox Code Playgroud)
如何创建另一个使用MY_POD_NAME的env变量并使其看起来像这样:uri:// $ MY_POD_NAME:9099 /
这必须定义为env变量.Kubernetes YAML文件中是否允许字符串操作?