在nutch中增加language-identifier插件的Java堆空间

时间:2011-08-18 09:03:31

标签: java hadoop nutch

我正在尝试添加一种新语言到自动语言检测工具Apache的tika。它需要构建一个语言配置文件来添加新语言。所以我使用nutch语言标识符插件来构建此配置文件。

命令如下:

bin/nutch plugin language-identifier org.apache.nutch.analysis.lang.NGramProfile -create ./language-detection-profile/jp ./language-detection-profile/japanese4ngram-1.txt utf-8

其中./language-detection-profile/japanese4ngram-1.txt是新的语言语料库。

我已经在小尺寸语料库(1 MB)上测试过,一切都很好,配置文件是按照我的预期创建的。

然而,当语料库很大(> 1 GB)时。我有内存不足(堆空间)的问题,比如

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.nutch.plugin.PluginRepository.main(PluginRepository.java:421)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
    at java.lang.StringBuilder.append(StringBuilder.java:119)
    at org.apache.nutch.analysis.lang.NGramProfile.create(NGramProfile.java:374)
    at org.apache.nutch.analysis.lang.NGramProfile.main(NGramProfile.java:484)
    ... 5 more

有谁知道如何为nutch的插件指定堆空间大小?感谢。

编辑: 在Mikaveli的帮助下。 在Ubuntu中: 设置

if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  NUTCH_OPTS="$NUTCH_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH -Xmx2048m"
fi

1 个答案:

答案 0 :(得分:1)

假设您正在开发Windows框,请编辑nutch.bat并在rem NUTCH_OPTS行之后添加以下内容:

set NUTCH_OPTS=%NUTCH_OPTS% -Xmx1024m

显然将RAM的数量设置在机器的物理极限范围内 - 请注意,Nutch可以轻松地需要4g,具体取决于您使用它的情况。