iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Modern Web

30Day啟動!!系列 第 14

Day14-結構化數據處理和查詢

  • 分享至 

  • xImage
  •  

Spark SQL是Apache Spark中的一個模組,它使您能夠使用結構化數據進行高效的查詢和分析。本次會介紹Spark SQL的基本概念,包括DataFrame、SQL查詢以及如何使用Spark SQL進行數據處理。

什麼是Spark SQL?

Spark SQL是一個用於結構化數據處理的Spark模組。它引入了DataFrame這一概念,DataFrame類似於關係型數據庫中的表格,具有以下特點:

結構化: DataFrame有固定的模式(schema),每列都有特定的數據類型。
優化: Spark SQL可以優化SQL查詢,以提高性能。
互操作性: 您可以將DataFrame與傳統的RDD和SQL語句結合使用。

創建DataFrame

要使用Spark SQL,首先需要創建DataFrame。您可以從不同的數據源創建DataFrame,例如JSON文件、CSV文件、Parquet文件,或者直接從現有RDD創建。

範例:
from pyspark.sql import SparkSession

創建SparkSession對象
spark = SparkSession.builder.appName("SparkSQL教學").getOrCreate()

從JSON文件創建DataFrame
df = spark.read.json("data.json")

在上面的代碼中,我們首先創建了一個SparkSession對象,然後使用read.json()方法從"data.json"文件創建了一個DataFrame。您可以替換文件路徑和格式,根據您的數據源。

使用SQL查詢

一旦有了DataFrame,您可以使用SQL查詢來查詢和分析數據。Spark SQL支持標準SQL語法,讓您能夠執行各種查詢操作。

範例:

創建一個臨時表格以供查詢
df.createOrReplaceTempView("people")

執行SQL查詢
result = spark.sql("SELECT name, age FROM people WHERE age >= 18")
result.show()

在上面的代碼中,我們首先將DataFrame註冊為一個臨時表格,然後使用spark.sql()方法執行SQL查詢,並使用show()方法顯示結果。

DataFrame轉換操作

除了SQL查詢,您還可以對DataFrame應用各種轉換操作,類似於RDD轉換操作。這些操作包括過濾、映射、聚合等。

範例:

選擇特定列並過濾數據
filtered_df = df.select("name", "age").filter(df["age"] >= 18)

顯示結果
filtered_df.show()


上一篇
Day13-Spark RDD
下一篇
Day15-Spark Streaming指南
系列文
30Day啟動!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言