首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sparkR 1.4.0 :如何包含jars

sparkR 1.4.0 :如何包含jars
EN

Stack Overflow用户
提问于 2015-06-26 00:58:25
回答 1查看 617关注 0票数 0

我正在尝试使用elasticsearch-hadoop-2.1.0.rc1.jar jar文件(找到here)将SparkR 1.4.0连接到Elasticsearch。在调用SparkR:::callJMethod函数时,需要进行一些修改。我需要为几个jobj类获取Java对象。对于某些类,这是可行的:

代码语言:javascript
复制
SparkR:::callJStatic('java.lang.Class', 
                     'forName', 
                     'org.apache.hadoop.io.NullWritable')

但对另一些人来说,它不是:

代码语言:javascript
复制
SparkR:::callJStatic('java.lang.Class', 
                     'forName', 
                     'org.elasticsearch.hadoop.mr.LinkedMapWritable')

产生错误:

代码语言:javascript
复制
java.lang.ClassNotFoundException:org.elasticsearch.hadoop.mr.EsInputFormat

看起来Java找不到org.elasticsearch.*类,尽管我已经尝试过在命令行--jars参数和sparkR.init(sparkJars = ...)函数中包含它们。

任何帮助都将不胜感激。此外,如果这是一个更合适的问题,属于实际的SparkR问题跟踪器,有人可以给我指点一下吗?我找了看,但没有找到。此外,如果有人知道将SparkR连接到Elasticsearch的替代方法,我也会很高兴听到。

谢谢!本

EN

回答 1

Stack Overflow用户

发布于 2015-08-08 00:07:07

下面是我是如何做到的:

代码语言:javascript
复制
# environments, packages, etc ----
Sys.setenv(SPARK_HOME = "/applications/spark-1.4.1")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))

library(SparkR)

# connecting Elasticsearch to Spark via ES-Hadoop-2.1 ----
spark_context <- sparkR.init(master = "local[2]", sparkPackages = "org.elasticsearch:elasticsearch-spark_2.10:2.1.0")
spark_sql_context <- sparkRSQL.init(spark_context)
spark_es <- read.df(spark_sql_context, path = "index/type", source = "org.elasticsearch.spark.sql")
printSchema(spark_es)

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31056399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档