我正在尝试在Amazon EMR上部署Livy Server.首先,我建立了Livy主分支
mvn clean package -Pscala-2.11 -Pspark-2.0
Run Code Online (Sandbox Code Playgroud)
然后,我将其上传到EMR集群主服务器.我设置了以下配置:
livy-env.sh
SPARK_HOME=/usr/lib/spark
HADOOP_CONF_DIR=/etc/hadoop/conf
Run Code Online (Sandbox Code Playgroud)
livy.conf
livy.spark.master = yarn
livy.spark.deployMode = cluster
Run Code Online (Sandbox Code Playgroud)
当我启动Livy时,它会在连接到YARN资源管理器时无限期挂起(XX.XX.XXX.XX是IP地址)
16/10/28 17:56:23 INFO RMProxy: Connecting to ResourceManager at /XX.XX.XXX.XX:8032
Run Code Online (Sandbox Code Playgroud)
但是,当我netcat端口8032时,它成功连接
nc -zv XX.XX.XXX.XX 8032
Connection to XX.XX.XXX.XX 8032 port [tcp/pro-ed] succeeded!
Run Code Online (Sandbox Code Playgroud)
我想我可能错过了一些步骤.任何人都知道这一步可能是什么?
我正在使用HTTP POST调用在Livy Server中执行语句localhost:8998/sessions/0/statements,具有以下正文
{
"code": "spark.sql(\"select * from test_table limit 10\")"
}
Run Code Online (Sandbox Code Playgroud)
我想以下列格式给出答案
(...)
"data": {
"application/json": "[
{"id": "123", "init_date": 1481649345, ...},
{"id": "133", "init_date": 1481649333, ...},
{"id": "155", "init_date": 1481642153, ...},
]"
}
(...)
Run Code Online (Sandbox Code Playgroud)
但我得到的是
(...)
"data": {
"text/plain": "res0: org.apache.spark.sql.DataFrame = [id: string, init_date: timestamp ... 64 more fields]"
}
(...)
Run Code Online (Sandbox Code Playgroud)
哪个是toString()数据帧的版本.
有没有办法使用Livy Server将数据帧作为JSON返回?
找到解决问题的JIRA问题:https://issues.cloudera.org/browse/LIVY-72
根据评论,可以说Livy不会也不会支持这样的功能?
TL;DR:运行 Spark-Shell(驱动程序)的 Spark 是否绝对有必要具有与 Spark 主版本完全相同的版本?
我正在使用Spark 1.5.0通过 Spark-shell连接到Spark 1.5.0-cdh5.5.0 :
spark-shell --master spark://quickstart.cloudera:7077 --conf "spark.executor.memory=256m"
Run Code Online (Sandbox Code Playgroud)
它可以很好地连接、实例化 SparkContext 和 sqlContext。如果我运行:
sqlContext.sql("show tables").show()
Run Code Online (Sandbox Code Playgroud)
它按预期显示了我的所有表格。
但是,如果我尝试访问表中的数据:
sqlContext.sql("select * from t1").show()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
java.io.InvalidClassException: org.apache.spark.sql.catalyst.expressions.AttributeReference; local class incompatible: stream classdesc serialVersionUID = 370695178000872136, local class serialVersionUID = -8877631944444173448
Run Code Online (Sandbox Code Playgroud)
它说serialVersionUID不匹配。我的假设是问题是由于尝试连接两个不同版本的 Spark 引起的。如果我是对的,有什么想法吗?
apache-spark cloudera-cdh apache-spark-sql apache-spark-standalone
我有一个使用Spark SQL的Java应用程序(Spark 1.5.2使用本地模式),但是我不能在没有错误的情况下执行任何SQL命令.
这是我正在执行的代码:
//confs
SparkConf sparkConf = new SparkConf();
sparkConf.set("spark.master","local");
sparkConf.set("spark.app.name","application01");
sparkConf.set("spark.driver.host","10.1.1.36");
sparkConf.set("spark.driver.port", "51810");
sparkConf.set("spark.executor.port", "51815");
sparkConf.set("spark.repl.class.uri","http://10.1.1.36:46146");
sparkConf.set("spark.executor.instances","2");
sparkConf.set("spark.jars","");
sparkConf.set("spark.executor.id","driver");
sparkConf.set("spark.submit.deployMode","client");
sparkConf.set("spark.fileserver.uri","http://10.1.1.36:47314");
sparkConf.set("spark.localProperties.clone","true");
sparkConf.set("spark.app.id","app-45631207172715-0002");
//Initialize contexts
JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);
SQLContext sqlContext = new SQLContext(sparkContext);
//execute command
sqlContext.sql("show tables").show();
Run Code Online (Sandbox Code Playgroud)
pom.xml中的 Spark依赖关系如下所示:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-repl_2.10</artifactId>
<version>1.5.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
java.lang.NoSuchMethodError: com.fasterxml.jackson.module.scala.deser.BigDecimalDeserializer$.handledType()Ljava/lang/Class;
Run Code Online (Sandbox Code Playgroud)
该堆栈跟踪是在这里.
我的应用程序是在Tomcat 7上运行的Web应用程序.我没有任何其他配置文件.我能做错什么?可能是一些依赖冲突,因为我能够在一个干净的项目中运行相同的代码?
编辑 …
我想将一个R脚本运行到eclipse中.
罐子:
环境(运行 - >运行配置 - >环境)
码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
import org.rosuda.JRI.Rengine;
public class HelloWorldApp {
public static void main(String[] args) throws RserveException, REXPMismatchException, FileNotFoundException, IOException {
RConnection c = new RConnection("localhost",6311);
if(c.isConnected()) {
System.out.println("Connected to RServe.");
if(c.needLogin()) {
System.out.println("Providing Login");
c.login("username", "password");
}
REXP x = c.eval("1:10");
for(int i=0;i < x.length();i++)
{ …Run Code Online (Sandbox Code Playgroud) apache-spark ×4
cloudera ×2
cloudera-cdh ×1
emr ×1
hadoop-yarn ×1
json ×1
livy ×1
r ×1
rjava ×1
rserve ×1
rstudio ×1