快速入门:Spark Connect#

Spark Connect 引入了一种解耦的 Spark 客户端-服务器架构,允许使用 DataFrame API 远程连接到 Spark 集群。

本笔记将通过一个简单的分步示例,介绍如何使用 Spark Connect 来构建需要利用 Spark 强大功能处理数据的各类应用程序。

Spark Connect 包含客户端和服务器组件,我们将向您展示如何设置和使用它们。

启动支持 Spark Connect 的 Spark 服务器#

要启动支持 Spark Connect 会话的 Spark,请运行 start-connect-server.sh 脚本。

[1]:
%%bash
source ~/.profile # Make sure environment variables are loaded.
$HOME/sbin/start-connect-server.sh

连接到 Spark Connect 服务器#

现在 Spark 服务器已运行,我们可以使用 Spark Connect 远程连接到它。我们通过在运行应用程序的客户端上创建一个远程 Spark 会话来做到这一点。在此之前,我们需要确保停止现有的常规 Spark 会话,因为它无法与我们即将创建的远程 Spark Connect 会话共存。

[2]:
from pyspark.sql import SparkSession

SparkSession.builder.master("local[*]").getOrCreate().stop()

我们上面用于启动服务器的命令将 Spark 配置为在 localhost:15002 运行。因此,现在我们可以使用以下命令在客户端上创建远程 Spark 会话。

[3]:
spark = SparkSession.builder.remote("sc://localhost:15002").getOrCreate()

创建 DataFrame#

远程 Spark 会话成功创建后,可以像常规 Spark 会话一样使用。因此,您可以使用以下命令创建 DataFrame。

[4]:
from datetime import datetime, date
from pyspark.sql import Row

df = spark.createDataFrame([
    Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
    Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
    Row(a=4, b=5., c='string3', d=date(2000, 3, 1), e=datetime(2000, 1, 3, 12, 0))
])
df.show()
+---+---+-------+----------+-------------------+
|  a|  b|      c|         d|                  e|
+---+---+-------+----------+-------------------+
|  1|2.0|string1|2000-01-01|2000-01-01 12:00:00|
|  2|3.0|string2|2000-02-01|2000-01-02 12:00:00|
|  4|5.0|string3|2000-03-01|2000-01-03 12:00:00|
+---+---+-------+----------+-------------------+

有关 DataFrame API 的更多详细用法,请参阅快速入门页面上的“实时笔记本:DataFrame”。