快速入门:Spark Connect ¶
Spark Connect 引入了一种解耦的客户端-服务器架构,允许使用 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 --packages org.apache.spark:spark-connect_2.12:$SPARK_VERSION
连接到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()
创建数据框 ¶
一旦远程 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”。