小编mat*_*usr的帖子

Amazon EMR上的Livy Server在连接到ResourceManager时挂起

我正在尝试在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)

我想我可能错过了一些步骤.任何人都知道这一步可能是什么?

cloudera emr hadoop-yarn apache-spark

11
推荐指数
1
解决办法
2945
查看次数

Livy Server:将数据帧作为JSON返回?

我正在使用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不会也不会支持这样的功能?

json cloudera apache-spark apache-spark-2.0 livy

8
推荐指数
1
解决办法
1741
查看次数

从不同 Spark 版本访问 Spark-Shell

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

5
推荐指数
1
解决办法
246
查看次数

无法在Apache Spark SQL 1.5.2的SQLContext中运行查询,获取java.lang.NoSuchMethodError

我有一个使用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应用程序.我没有任何其他配置文件.我能做错什么?可能是一些依赖冲突,因为我能够在一个干净的项目中运行相同的代码?

编辑 …

apache-spark apache-spark-sql

4
推荐指数
1
解决办法
3029
查看次数

Rserve安装错误

我想将一个R脚本运行到eclipse中.

  • R 3.1.1
  • Ubuntu 12.04
  • Eclipse Kepler
  • 罐子:

    • JRI.jar
    • REngine.jar
    • RserveEngine.jar
  • 环境(运行 - >运行配置 - >环境)

    • R_HOME:/ usr/local/lib/R.

码:

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)

r rjava rstudio rserve

1
推荐指数
1
解决办法
4723
查看次数