小编Nat*_*ase的帖子

在子项目上执行gradle任务

我有一个我正在尝试配置的MultiModule gradle项目.

Root
    projA
    projB
    other
        projC
        projD
        projE
        ...
Run Code Online (Sandbox Code Playgroud)

我希望能够做的是在root build.gradle中有一个任务,它将在另一个目录中的每个项目中执行buildJar任务.

我知道我能做到

configure(subprojects.findAll {it.name != 'tropicalFish'}) {
    task hello << { task -> println "$task.project.name"}
}
Run Code Online (Sandbox Code Playgroud)

但这也会得到projA和projB,我只想在c,d,e上执行任务...请让我知道实现这一目标的最佳方法.

gradle multi-module build.gradle

39
推荐指数
2
解决办法
4万
查看次数

Spark WS Framework Filter被调用两次

我想使用前置过滤器来添加尾部斜杠以及前置过滤器来处理某些端点上的身份验证.

这是我的路由代码:

// Add filter to all requests which adds a trailing slash if it is missing //
before("*", Filters.addTrailingSlashes);
path("/api", () -> {
    // Authentication Intercept //
    before("/*", AuthenticationIntercept.authenticationIntercept);

    // Sampling Endpoints //
    get(Path.Web.SAMPLES_FETCH_LATEST, SamplingController.fetchLatestSamples, new JsonTransformer());
    get(Path.Web.SAMPLES_FETCH_FOR_DEVICE, SamplingController.getLatestSamplesForDevice, new JsonTransformer());
});
Run Code Online (Sandbox Code Playgroud)

然后我点击以下端点:

本地主机:4567/API /样品/ 10

会发生什么是首先调用addTrailingSlashes.然后调用身份验证过滤器,然后再次调用addTrailingSlashes,localhost:4567/api/samples/10 /作为请求端点,最后再次调用身份验证过滤器.

这是预期的行为吗?我想要发生的是,addTrailingSlashes一旦添加斜杠就被调用,然后转发请求一次,以便只调用一次身份验证过滤器.

任何想法都将非常感激.

谢谢,内森

java rest spark-framework

6
推荐指数
1
解决办法
150
查看次数

Spark ExecutorLostFailure内存超出

我一直试图获得一个火花工作,现在运行完成几天,我终于能够完成它但仍然有大量失败的任务,其中执行者被杀死的信息如下:

ExecutorLostFailure(执行程序77退出由其中一个正在运行的任务引起)原因:容器被YARN杀死超过内存限制.使用45.1 GB的44.9 GB物理内存.考虑提升spark.yarn.executor.memoryOverhead

这些是我传递给集群的属性:

[
    {
        "classification": "spark-defaults",
        "properties": {
            "spark.executor.memory": "41000m",
            "spark.driver.memory": "8000m",
            "spark.executor.cores": "6",
            "spark.shuffle.service.enabled": "true",
            "spark.executor.instances": "98",
            "spark.yarn.executor.memoryOverhead": "5000"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

该集群包括20台机器,每台机器有32个内核和240G内存.我是否应该继续提高memoryOverhead,或者是否表明存在更深层次的问题.在将结果数据写入S3之前,此时的错误似乎发生在从5000个分区合并到500个分区期间.我猜测coalesce导致了一个shuffle,因为集群的内存已经很低,所以它推得太远了.

工作流程如下:

  1. 将s3中的镶木地板文件加载到数据框中
  2. 提取一组唯一键,使用sql查询对数据进行分组
  3. 将数据帧转换为JavaRDD并应用多个映射函数
  4. MapToPair的数据
  5. 使用下面的combineByKey,实质上是通过键将单个对象合并到对象数组中

    combineByKey(新函数,添加函数,合并函数,新HashPartitioner(5000),false,null);

  6. 更多地图

  7. 对于几个唯一键中的每一个,过滤rdd以获得具有该键的元组,然后在合并后将每个子集保留到磁盘

另一个问题是如何导出上面的44.9数字.我认为最大内存将是执行程序内存+ memoryOverhead,这将是46G而不是44.9G.

Nathan,非常感谢任何帮助

memory-management coalesce hadoop-yarn apache-spark

1
推荐指数
1
解决办法
2507
查看次数