sparkR 1.4.0:如何包含罐子

时间:2015-06-25 16:58:25

标签: elasticsearch apache-spark sparkr elasticsearch-hadoop

我尝试使用elasticsearch-hadoop-2.1.0.rc1.jar jar文件(找到here)将SparkR 1.4.0挂钩到Elasticsearch。它需要一些黑客攻击,调用SparkR:::callJMethod函数。我需要为几个Java类获取一个jobj R对象。对于某些课程,这有效:

SparkR:::callJStatic('java.lang.Class', 
                     'forName', 
                     'org.apache.hadoop.io.NullWritable')

但对于其他人来说,却没有:

SparkR:::callJStatic('java.lang.Class', 
                     'forName', 
                     'org.elasticsearch.hadoop.mr.LinkedMapWritable')

产生错误:

java.lang.ClassNotFoundException:org.elasticsearch.hadoop.mr.EsInputFormat

似乎Java没有找到org.elasticsearch.*类,即使我尝试使用命令行--jars参数和sparkR.init(sparkJars = ...)函数包含它们

非常感谢任何帮助。此外,如果这是一个更适合实际SparkR问题跟踪器的问题,有人可以指点我吗?我看了,却找不到它。此外,如果有人知道将SparkR挂钩到Elasticsearch的另一种方式,我也很高兴听到这一点。

谢谢! 本

1 个答案:

答案 0 :(得分:1)

以下是我如何实现它:

a

(Spark 1.4.1,Elasticsearch 1.5.1,OS X Yosemite上的ES-Hadoop 2.1)

关键的想法是链接到ES-Hadoop包而不是jar文件,并使用它直接创建Spark SQL上下文。