小编Col*_*nMc的帖子

如何根据驱动程序覆盖Spark的log4j.properties?

我试图覆盖Spark的默认值log4j.properties,但没有任何运气.我尝试将以下内容添加到spark-submit:

--conf "spark.executor.extraJavaOptions=Dlog4j.configuration=/tmp/log4j.properties"  
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=/tmp/log4j.properties"
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我也试过使用--files选项,spark-submit但似乎也没有用.有没有人有日志设置,所以你有log4j.properties每个驱动程序的文件而不使用默认值?

我正在使用Mesos和Marathon来运行Spark驱动程序.我不确定该--files选项,我找不到任何关于它如何使用以及它究竟做什么的例子.

我还想提一下,我手动将log4j.properties文件上传到我的所有节点,这些节点都有我的测试更改.

截至目前,Spark版本为1.1.0.

logging apache-spark

19
推荐指数
3
解决办法
2万
查看次数

Jersey WADL:如何重命名生成的XSD

我正在处理的Web服务具有Jersey创建的生成的WADL.我想要做的是将xsd0.xsd重命名为Result.xsd或类似的东西.每当它重新生成WADL时,它将是Result.xsd.泽西有可能吗?

java xsd jersey wadl

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

在Java中运行时编译Groovy类

我成功地能够在运行时在Java中编译Groovy并将其存储在数据库中并将其拉出来.如果它有内部类或内部枚举,我无法编译Groovy类.有没有人成功编译这样的Groovy代码并包含内部类/枚举并能够通过类名拉出脚本?

例如,我想加载下面显示的包含内部类的"Test"脚本,并在运行时运行脚本.

编译代码:

public byte[] compileGroovyScript(final String className, final String script) {
    byte[] compiledScriptBytes = null;
    CompilationUnit compileUnit = new CompilationUnit();
    compileUnit.addSource(className, script);
    compileUnit.compile(Phases.CLASS_GENERATION);

    for (Object compileClass : compileUnit.getClasses()) {
        GroovyClass groovyClass = (GroovyClass) compileClass;
        compiledScriptBytes = groovyClass.getBytes();
    }

    return compiledScriptBytes;
}
Run Code Online (Sandbox Code Playgroud)

拉出脚本的代码:

public Class getGroovyScript(final String className, final byte[] script) {
    Class clazz = null;

    try (GroovyClassLoader classLoader = new GroovyClassLoader(this.getClass().getClassLoader())) {
        clazz = classLoader.defineClass(className, script);
    } catch (IOException e) {
    } catch (Exception e) {
    }

    return clazz; …
Run Code Online (Sandbox Code Playgroud)

java groovy runtime-compilation

9
推荐指数
2
解决办法
8108
查看次数

什么 Java 垃圾收集器清理 PermGen?

垃圾收集器列表:

  • 串行气相色谱
  • 并行GC
  • 并行旧GC
  • Conc Mark Sweep GC
  • G1 气相色谱

我知道当您启用 ClassUnloading JVM 选项时,Conc Mark Sweep GC 支持清理 PermGen。其他垃圾收集器是否支持清理 PermGen?

原因:我们使用 Spring、Hibernate 和 Groovy,它们创建了很多代理,并且 Perm Gen 变大了。

编辑:应该提到我使用的是 Java 7。我知道 Java 8 删除了 Perm Gen,希望将来会升级。与此同时,我的问题是其他垃圾收集器是否支持清理除 Conc Mark Sweep 之外的 PermGen。

  • 串行气相色谱
  • Parallel GC(相信 -server 默认使用它并确认它清理了 perm gen)
  • 并行旧GC
  • Conc Mark Sweep GC(可以使用 JVM 标志清理 perm gen)
  • G1 气相色谱

java garbage-collection permgen

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

Groovy更新导致PermGen中大量的GroovyClassLoaders死机

我有一个Java 7项目,它每n分钟由n个进程运行一次脚本。这是运行脚本的代码示例。

ScheduledFuture scheduledFuture = scheduledService.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                try (GroovyClassLoader cl = new GroovyClassLoader()) {
                    // Load up reusable script modules in the class loader
                    Class scriptClass = cl.parseClass(scriptSource);
                    Foo script = optimizationClass.newInstance();

                    // Tell Groovy that we don't need class meta info
                    GroovySystem.getMetaClassRegistry().removeMetaClass(scriptClass);
                    script.run();
                    cl.clearCache();
                } catch (IOException e) {
                    LOGGER.error("Failed to cleanup Groovy class loader, this will cause a memory leak", e);
                }
            }
        }, 0, scheduledRun, TimeUnit.SECONDS);

        scheduledFuture.get();
Run Code Online (Sandbox Code Playgroud)

由于某些原因,Groovy 2.1.7在Perm Gen中没有内存泄漏。当升级到Groovy 2.3.8或Groovy …

java groovy permgen

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