我有一个大约10个平面文件的应用程序,每个文件的价值超过200MM +记录.业务逻辑涉及按顺序连接所有这些逻辑.
我的环境:1个主站 - 3个从站(用于测试我为每个节点分配了1GB内存)
大多数代码只针对每个连接执行以下操作
RDD1 = sc.textFile(file1).mapToPair(..)
RDD2 = sc.textFile(file2).mapToPair(..)
join = RDD1.join(RDD2).map(peopleObject)
Run Code Online (Sandbox Code Playgroud)
任何调整建议,如重新分区,并行化......?如果是这样,有什么最佳做法可以提出重新分配的好数字?
使用当前配置,该作业需要一个多小时,我看到几乎每个文件的shuffle写入> 3GB
我正在开发一个 SparkJava(不是 Apache Spark)应用程序,我想在前置过滤器和后置路由之间共享一个对象。过滤器和路由在不同的类中定义。我不愿意继续使用会话,因为它是一个移动应用程序 json api,从理论上讲,它应该是无会话的。变量范围应该是从请求处理开始到结束。
before(Main.API_PROTECTED + "/*", (req, res) -> {
String token = req.headers("Authorization");
if (token == null | "".equals(token)) {
halt(401, "You're not welcome.");
} else {
Partner partner = new PartnerDAO().getPartnerByToken(token.replace("Bearer ", ""));
if (partner == null) {
halt(401, "You're not welcome.");
}
}
});
Run Code Online (Sandbox Code Playgroud)
有上面的 before 过滤器,我想从中与下面的 post 路由共享合作伙伴对象:
post(Main.API_PROTECTED + "/vendors",
(req, res) -> {
// Do stuff to insert Vendors in the Database, verifying access control using the partner object
return ""; …Run Code Online (Sandbox Code Playgroud)