我有一个tsv文件是分开的类,id和文本,例如。
positive 2342 This is very good.
negative 4343 I hate it.
我试着给mahout的nbayes分类文本部分pos或neg。
我的第一次尝试是在每一行上使用mahout seqdirectory命令作为类目录中的一个独立文件。这在处理少量数据时效果很好,但最终在处理30GB左右的数据时失败,并出现outofmemoryexception。增加堆大小失败,并“超出gc开销限制”,可能是因为存在大量的独立文件。
我的第二次尝试是将数据加载到一个配置单元表中,并将其转换为一个序列文件,如本文[0]所述,该文件一开始似乎工作正常,但在创建向量文件并拆分数据集之后,trainnb步骤失败,出现了arrayindexoutofbounds异常。
[0] http://files.meetup.com/6195792/working%20with%20mahout.pdf
现在我不知道该找什么了。知道如何将tsv文件或配置单元表转换为seqdirectory命令在目录上生成的sequencefile吗?
2条答案
按热度按时间guz6ccqo1#
如果其他人需要解决相同或类似的问题,我会自己回答:
我在github找到了这个代码片段,并根据自己的需要对其进行了修改。此外,我必须修剪值字符串以获得正确的结果。
jtjikinw2#
对于将来寻找这个答案的人来说,这可能是一个更简单的实现。这完全可以从命令行完成(我在emr中测试过):
/home/hadoop/contrib/streaming/hadoop-streaming.jar是amazonemr(ami3.4.0)上hadoop-streaming.jar的位置。它可能位于不同的位置,具体取决于您的配置。