前言
在前端类技术中,Livy 是一款广泛使用的 Spark 实时编程工具。它是一个基于 REST API 的交互式 Spark Shell,通过提交 Spark 作业来实现对 Spark 的编程。在 Livy 中,使用了 Scala 标记,提高了编程的效率和可读性。本文将介绍如何使用 Twitter 的 Scala 标记 Livy 的基于 GraphQL 的图形界面,帮助读者更好地开发和使用 Livy。
Livy 简介
Livy 是一款基于 REST API 的交互式 Spark Shell 工具。它是一个独立的 Spark 应用程序,它允许用户在 Spark 集群上执行交互式和批处理任务。在 Livy 中,您可以使用 Scala 标记来编写代码,从而提高编程效率和可读性。
使用 Livy 的好处
- 可以在本地运行 Spark 代码,测试和开发逻辑
- 不需要在每个程序中重新启动 SparkContext,因为应用程序是长时间运行的
- 可以通过 REST API 发送 Spark 作业,可以将 Livy 与其他系统集成
使用 Twitter 的 Scala 标记 Livy 的基于 GraphQL 的图形界面
Twitter 的 Scala 标记 Livy 的基于 GraphQL 的图形界面是一款优秀的前端工具,它可以帮助用户更好地编写和使用 Livy。它提供了以下功能:
- 显示已经提交的所有作业(交互式和批处理)
- 显示作业正在运行的状态,例如正在运行、成功或失败
- 显示作业的输出和错误
- 允许用户一键重试已经失败的作业
- 提供了一个使用 GraphQL 请求并获取数据的接口
如何使用 Livy 和 Twitter 的 Scala 标记
- 安装 Livy
Livy 的安装非常简单,您只需要按照官方文档指示执行即可。下载 Livy 安装包,解压到本地目录。然后,修改 conf 文件夹中的 livy.conf 文件,确保所有配置满足您的需求。最后,启动 Livy:
./bin/livy-server start
- 使用 Scala 标记编写代码
现在,我们可以使用 Scala 标记编写代码了。此时,您需要确保您的 Scala 版本与 Spark 集群中的版本相同。假设我们需要使用 Spark SQL 的 DataFrame API,代码如下:
%spark val sqlContext = new org.apache.spark.sql.SQLContext(sc) val df = sqlContext.read.json("path/to/json") df.printSchema()
- 提交 Spark 作业
在向 Livy 提交 Spark 作业之前,您需要创建会话。会话是一种连接 Spark 集群的方式。您可以在 Livy REST API 中创建新的会话,并从中提交作业。以下是创建新会话并提交工作的示例:
POST http://livy-server:8998/sessions/ { "kind": "spark", "jars": ["/path/to/my.jar"] "conf": { "spark.master": "local[*]" } }
- 运行 Twitter 的 Scala 标记 Livy 的基于 GraphQL 的图形界面
现在,您可以按照官方文档指示下载和安装 GraphQL IDE。首先,在终端中将以下命令输入:
npm install -g graphiql
然后,使用以下命令启动 GraphQL IDE:
graphiql --endpoint=http://localhost:8998/graphql
现在,您可以在浏览器中访问 http://localhost:3000/graphql,这将显示 GraphQL IDE。在右侧主窗口中,您可以写下您的 GraphQL 查询。以下是查询活动会话的所有作业的示例:
{ livy { sessions { id state logs { id state output } } } }
- 重试作业
如果某个作业失败,我们可以使用 Livy REST API 来重新提交作业。以下是展示如何重试一个作业的示例:
POST http://livy-server:8998/batches/1/retry
结论
通过 Twitter 的 Scala 标记 Livy 的基于 GraphQL 的图形界面,我们可以更好地编写和使用 Livy。我们可以更好地管理我们的 Spark 作业,并使用 GraphQL 发送和接收数据。Livy 带来了众多优势,较少的开销,不需要在每个程序中重新启动 SparkContext,可更好地对作业进行管理和调度。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670b4afbd91dce0dc88931d5