快速入门:使用 Apache Spark 进行分析
本教程介绍使用 Apache Spark for Azure Synapse 加载和分析数据的基本步骤。
先决条件
请确保已将示例数据放入主存储帐户。
创建无服务器 Apache Spark 池
- 在 Synapse Studio 的左侧窗格中,选择“管理”>“Apache Spark 池” 。
- 选择“新建”
- 对于“Apache Spark 池名称”,请输入“Spark1” 。
- 对于“节点大小”,请输入“小” 。
- 对于“节点数”,请将最小值设置为 3,将最大值设置为 3
- 选择“查看 + 创建”>“创建”。 你的 Apache Spark 池将在几秒钟内准备就绪。
了解无服务器 Apache Spark 池
无服务器 Spark 池是一种用于指示用户要如何使用 Spark 的方式。 开始使用池时,系统会根据需要创建 Spark 会话。 池控制该会话将使用多少个 Spark 资源,以及会话在自动暂停之前的持续时间。 需要为在该会话期间使用的 spark 资源付费,而不是为池本身付费。 这样,Spark 池可让你使用 Apache Spark,而无需管理群集。 这类似于无服务器 SQL 池的工作方式。
使用 Spark 池分析纽约市出租车数据
注意
请确保已将示例数据放入主存储帐户。
在 Synapse Studio 中,转到“开发”中心。
创建新的笔记本。
创建新代码单元并将以下代码粘贴到该单元中:
%%pyspark df = spark.read.load('abfss://users@contosolake.dfs.core.chinacloudapi.cn/NYCTripSmall.parquet', format='parquet') display(df.limit(10))
修改加载 URI,使其根据 abfss URI 方案引用存储帐户中的示例文件。
在笔记本的“附加到”菜单中,选择之前创建的 Spark1 无服务器 Spark 池 。
选择单元上的“运行”。 如果需要,Synapse 将启动新的 Spark 会话来运行此单元格。 如果需要新的 Spark 会话,最初将需要大约 2 到 5 分钟的时间来创建。 创建会话后,执行单元格大约需要 2 秒。
如果只想查看数据帧的架构,请通过以下代码运行单元:
%%pyspark df.printSchema()
将纽约市出租车数据加载到 Spark nyctaxi 数据库
数据可通过名为 df 的数据帧进行访问。 将其加载到名为 nyctaxi 的 Spark 数据库。
在笔记本中新增一个代码单元,然后输入以下代码:
%%pyspark spark.sql("CREATE DATABASE IF NOT EXISTS nyctaxi") df.write.mode("overwrite").saveAsTable("nyctaxi.trip")
使用 Spark 和笔记本分析纽约市出租车数据
创建新代码单元并输入以下代码。
%%pyspark df = spark.sql("SELECT * FROM nyctaxi.trip") display(df)
运行该单元以显示我们加载到 nyctaxi Spark 数据库中的纽约市出租车数据。
创建新代码单元并输入以下代码。 我们会分析此数据,并将结果保存到名为“nyctaxi.passengercountstats”的表中。
%%pyspark df = spark.sql(""" SELECT passenger_count, SUM(trip_distance) as SumTripDistance, AVG(trip_distance) as AvgTripDistance FROM nyctaxi.trip WHERE trip_distance > 0 AND passenger_count > 0 GROUP BY passenger_count ORDER BY passenger_count """) display(df) df.write.saveAsTable("nyctaxi.passengercountstats")
在单元结果中,选择“图表”以查看直观呈现出来的数据。