来自 Apache Spark 的官方文档:
http://spark.apache.org/docs/latest/rdd-programming-guide.html
map(func):返回一个新的分布式数据集,该数据集是通过函数func传递源的每个元素形成的。
filter(func) 返回一个新数据集,该数据集通过选择源中 func 返回 true 的那些元素而形成。
大胆地说,这是一个很大的区别吗?真的有区别吗?
我必须比较一个自定义类的对象,比如说A。
比较是基于A的int成员(例如mem)进行的简单比较。
因此,在比较器实现中,我可以执行以下操作:
(A a1, A a2) -> {return (Integer)a1.getMem().compareTo(a2.getMem());}
Run Code Online (Sandbox Code Playgroud)
或者,我可以自己比较:
(A a1, A a2) -> {
if(a1.getMem() > a2.getMem()){
return 1;
}else{
if(a1.getMem() < a2.getMem()) {
return -1;
}else{
return 0
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪种方法更好?
第一种方法的代码行少得多,但是内部compareTo所做的与第二种方法相同。
我有 2 个选项,我需要取它们持有的值的平均值。
有可能缺少一个或两个。如果缺少其中一个值,我只会将另一个值作为平均值。但如果两者都缺失,我会求助于一些默认值。
如何以干净的方式做到这一点?
我可以使用 isEmpty 检查值的缺失,但是这与空检查不一样吗?
在此链接中,它说明了速率必须用于微米度量的原因。
Representing a counter without rate normalization over some time window is rarely useful, as the representation is a function of both the rapidity with which the counter is incremented and the longevity of the service.
Run Code Online (Sandbox Code Playgroud)
我仍然无法理解为什么不直接进行求和/计数。
任何输入都有帮助。
我有以下代码:
new Random().ints()
.map(i -> i / 2)
.limit(100)
.toArray()
Run Code Online (Sandbox Code Playgroud)
...并且它按预期工作。
但这不起作用:
new Random().ints()
.sorted()
.map(i -> i / 2)
.limit(100)
.toArray()
Run Code Online (Sandbox Code Playgroud)
它抛出:
Exception in thread "main" java.lang.IllegalArgumentException: Stream size exceeds max array size
Run Code Online (Sandbox Code Playgroud)
limit 不应该使流短路并帮助将其限制为 100 个元素吗?
这两个服务器扩展选项哪个更合适?乍一看,横向扩展会导致网络发挥更大的作用,因此会出现延迟等相关问题。那么为什么我应该选择横向扩展而不是纵向扩展呢?
我有 2 个 scala 项目,A 和 B。A 依赖于 B。在将更改推送到中央远程存储库之前,我必须进行一些本地测试。所以我在B中进行更改,将其version.sbt更改为0.0.1-SNAPSHOT并使用本地发布
sbt publishLocal
Run Code Online (Sandbox Code Playgroud)
我可以看到 0.0.1-SNAPSHOT 保存在“C:\var.ivy2\local”中。
在 A 中,我将 DependencyManagement.scala 更改为现在选取 B 的快照版本:
val BVersion = "0.0.1-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)
但在调试 A 期间,我看到 B 的类是从以下 jar 中获取的:C:\Users\myusername\AppData\Local\Coursier\cache\....\artifactory\virtual-ivy
如何确保选择快照版本?
Cassandra 有 gossiper 实现(类 org.apache.cassandra.gms.Gossiper)以及“Phi 应计故障检测器”的实现(类 org.apache.cassandra.gms.FailureDetector)。
据我所知,两者都是故障检测机制。那么 Cassandra 到底使用哪一项来检测节点故障呢?
在 Scala、Haskell 等 FP 语言中,使用了纯函数,这使得编译器可以优化代码。例如:
val x = method1()// a pure function call
val y = method2// another pure function call
val c = method3(x,y)
Run Code Online (Sandbox Code Playgroud)
由于method1和method2是纯函数,因此评估彼此独立,编译器可以并行化这两个调用。
像 Haskell 这样的语言内部有结构(比如 IO monad),它告诉函数是纯函数还是执行一些 IO 操作。但是 Scala 编译器如何检测一个函数是纯函数呢?
我的入口为:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mongoexpress-ingress
spec:
rules:
- host: mylocalmongoexpress.com
http:
paths:
- backend:
serviceName: mongoexpress-service
servicePort: 8081
Run Code Online (Sandbox Code Playgroud)
当我运行“kubectl apply -f mongoexpress-ingress.yaml”时,出现错误:
错误:验证“mongoexpress-ingress.yaml”时出错:验证数据时出错:[ValidationError(Ingress.spec.rules[0].http.paths[0].backend):io.k8s.api 中的未知字段“serviceName”。 networking.v1.IngressBackend,ValidationError(Ingress.spec.rules [0] .http.paths [0] .backend):io.k8s.api.networking.v1.IngressBackend中的未知字段“servicePort”,ValidationError(Ingress.spec .rules[0].http.paths[0]): io.k8s.api.networking.v1.HTTPIngressPath] 中缺少必填字段“pathType”;如果您选择忽略这些错误,请使用 --validate=false 关闭验证
浏览在线资源,我在 yaml 文件中找不到问题。
那么我在这里缺少什么?
scala ×3
java ×2
apache-spark ×1
cassandra ×1
comparator ×1
java-8 ×1
java-stream ×1
kubectl ×1
kubernetes ×1
micrometer ×1
prometheus ×1
sbt ×1
scala-option ×1
server ×1