标签: livy

将Apache Livy与spark-jobserver进行比较

我知道Apache Livy是从任何地方与spark交互的休息界面.那么使用Apache Livy而不是spark-jobserver有什么好处呢.使用Livy作为替代方案的spark-jobserver有什么缺点.我在互联网上找不到这个.能否请你帮我澄清一下.

谢谢,

apache-spark spark-jobserver livy

15
推荐指数
2
解决办法
1664
查看次数

为什么Livy或spark-jobserver而不是简单的Web框架?

我正在Apache Spark上构建一个RESTful API.提供以下Python脚本spark-submit似乎工作正常:

import cherrypy
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('myApp').getOrCreate()
sc = spark.sparkContext

class doStuff(object):
    @cherrypy.expose
    def compute(self, user_input):
        # do something spark-y with the user input
        return user_output

cherrypy.quickstart(doStuff())
Run Code Online (Sandbox Code Playgroud)

但谷歌搜索我看到像Livyspark-jobserver这样的东西.我阅读了这些项目的文档和一些教程,但我仍然不完全理解Livy或spark-jobserver优于使用CherryPy或Flask或任何其他Web框架的简单脚本的优点.它是关于可扩展性的吗?上下文管理?我在这里错过了什么?如果我想要的是一个用户不多的简单RESTful API,那么Livy或spark-jobserver值得吗?如果是这样,为什么?

apache-spark spark-jobserver livy

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

用于单元测试的 Mock livy 服务器

我目前正在尝试从 Scala模拟一个 livy 服务器来运行单元测试。

基本上,我想测试将 jar 提交给 livy 客户端。我正在尝试修改我在此处找到的代码(livy)HttpClientSpec.scala,但在编译时出现错误。

更确切地说,我发现了一个错误,每当我试图重写方法createSession的的InteractiveSessionServlet类。这很奇怪,因为InteractiveSessionServlet它不是私人课程。

如果有人能帮我解决这个问题,我将不胜感激。

这是我的代码:

import java.util.concurrent.atomic.AtomicLong
import org.scalatra.servlet.ScalatraListener
import org.apache.livy.{LivyClient, LivyConf}
import org.apache.livy.client.common.Serializer
import org.apache.livy.server.WebServer
import org.apache.livy.server.interactive.InteractiveSession
import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers}

private object LivyServerMock {
  // Hack warning: keep the session object available so that individual tests can mock
  // the desired behavior before making requests to the server.
  var session: InteractiveSession = _
}

class LivyServerMock extends FlatSpec with …
Run Code Online (Sandbox Code Playgroud)

java unit-testing scala apache-spark livy

9
推荐指数
0
解决办法
214
查看次数

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
查看次数

从C#提交Spark作业并获得结果

根据标题,我想请求计算Spark集群(Azure中的local/HDInsight)并从C#应用程序返回结果.

我承认Livy的存在,我理解它是一个位于Spark之上的REST API应用程序来查询它,我还没有找到一个标准的C#API包.这是工作的正确工具吗?它只是缺少一个众所周知的C#API吗?

星火集群需要访问Azure的宇宙DB,所以我需要能够以提交包括连接器的jar库(或其上的群集驱动器路径)的一个工作,星火从读取数据宇宙.

c# hdinsight apache-spark livy .net-spark

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

Spark 会话返回错误:Apache NiFi

我们正在尝试使用 NiFi 运行一个 Spark 程序。这是我们尝试遵循的基本示例

我们已经在127.0.0.1:8998.

ExecutiveSparkInteractive 处理器用于运行示例 Spark 代码。

val gdpDF = spark.read.json("gdp.json")
val gdpRDD = gdpDF.rdd
gdpRDD.count()
Run Code Online (Sandbox Code Playgroud)

LivyController127.0.0.1端口8998和 配置Session Type : spark

当我们运行处理器时,我们得到以下错误:

Spark Session返回错误,将输出的JSON对象作为流文件内容发送到失败(惩罚后)

我们只想输出 JSON 文件中的行数。如何将其重定向到流文件?

NiFi 用户日志:

2020-04-13 21:50:49,955 INFO [NiFi Web Server-85] org.apache.nifi.web.filter.RequestLogger Attempting request for (anonymous) GET http://localhost:9090/nifi-api/flow/控制器/公告(源IP:127.0.0.1)

NiFi 应用程序.log

ERROR [Timer-Driven Process Thread-3] oanplivy.ExecuteSparkInteractive ExecuteSparkInteractive[id=9a338053-0173-1000-fbe9-e613558ad33b] Spark Session 返回错误,将输出 JSON 对象作为流文件内容发送到失败(惩罚后)

scala apache-spark apache-nifi livy

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

成功创建 Spark 上下文后,Livy 会话一直停留在启动状态

我一直在尝试使用在 Ubuntu 18.04 上运行的 Livy 0.7 服务器创建一个新的 Spark 会话。在同一台机器上,我有一个正在运行的 Spark 集群,有 2 个工作人员,我可以创建一个正常的 Spark 会话。

我的问题是,在向 Livy 服务器运行以下请求后,会话停留在启动状态:

import json, pprint, requests, textwrap
host = 'http://localhost:8998'
data = {'kind': 'spark'}
headers = {'Content-Type': 'application/json'}
r = requests.post(host + '/sessions', data=json.dumps(data), headers=headers)
r.json()
Run Code Online (Sandbox Code Playgroud)

我可以看到会话正在启动并从会话日志中创建了 Spark 会话:

20/06/03 13:52:31 INFO SparkEntries: Spark context finished initialization in 5197ms
20/06/03 13:52:31 INFO SparkEntries: Created Spark session.
20/06/03 13:52:46 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: Registered executor NettyRpcEndpointRef(spark-client://Executor) (xxx.xx.xx.xxx:1828) with ID 0
20/06/03 13:52:47 INFO BlockManagerMasterEndpoint: Registering block manager …
Run Code Online (Sandbox Code Playgroud)

ubuntu apache-spark apache-spark-standalone livy

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

与 Kerberos 的闪亮连接

我可以通过 Livy 服务连接到非 Kerberized Spark集群,而不会出现来自远程Rstudio 桌面(Windows)的问题。

但是,如果启用了 Kerberos 安全性,连接将失败:

library(sparklyr)
sc <- spark_connect("http://host:8998", method = "livy")
Run Code Online (Sandbox Code Playgroud)

回来

Error in livy_validate_http_response("Failed to create livy session",  : 
Livy operation is unauthorized. Try spark_connect with config = livy_config()
Run Code Online (Sandbox Code Playgroud)

使用sparklyr_0.5.6-9002MIT Kerberos for Windows 进行身份验证。

在另一方面,从群集(即,通过curl)连接成功。

我究竟做错了什么?这种连接需要哪些额外设置?

livy_config(..., username, password)配置似乎只形成一个Authorization: Basic ...头,但这里笔者还是怀疑NegotiateKerberos(?)应该不是必需的。

我还缺少其他任何可能的配置吗?

注意:kinit在使用授权用户从 shell 运行后,从 RStudio Server (web) 返回相同的错误。

kerberos r sparklyr livy

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

错误:Apache Livy 中的“本地路径______无法添加到用户会话”

我正在尝试将 Python 文件提交给 REST API,但它总是给出错误。我正在使用本地模式,我正在运行的命令如下:

$curl -X POST --data '{"file":"/Users/neha/Desktop/spark_project/examples/spark_livy_ex3.py"}' -H "Content-Type: application/json" localhost:8998/batches

"requirement failed: Local path /Users/neha/Desktop/spark_project/examples/spark_livy_ex3.py cannot be added to user sessions."
Run Code Online (Sandbox Code Playgroud)

从这个链接https://groups.google.com/a/cloudera.org/forum/#!topic/livy-user/mm-XEhANDHU我发现我必须通过修改 livy.conf 来修改 livy.conf将 /Users/neha/Desktop/spark_project/examples/ 目录添加到 livy.file.local-dir-whitelist。我再次使用上面的 curl 命令运行代码,但现在我也遇到了同样的错误。

请注意,'spark_livy_ex3.py' 是我要运行的 python 文件。

我该如何解决这个问题?

python apache-spark livy

5
推荐指数
0
解决办法
565
查看次数

Jupyter 在 docker 容器中启动内核?

我想在不同内核之间轻松切换我的笔记本。一个用例是在tensorflow 2、2.2、2.3中快速测试一段代码,类似的用例还有很多。但是,我现在更喜欢将我的环境定义为 docker,而不是不同的(conda)环境。

现在我知道您可以在容器中启动 jupyter,但这不是我想要的。我只想单击Kernel > use kernel > TF 2.2 (docker),让 jupyter 连接到在此容器中运行的内核。

周围有这样的东西吗?我曾经livy通过 ssh 连接到远程 Spark 内核,所以感觉这应该是可能的。

python docker jupyter-notebook livy

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