1、SparkSession 介紹
通過SparkSession 可以創建DataFrame, 也可以把DataFrame註冊成一個table,基於此執行一系列SQL操作。DataFrame和pandas裏的DataFrame類似。
關於什麼是DataFrame,後續會出一篇介紹spark基本概念的博客。
2、實驗環境
博主是用的 jupyter notebook,新建了一個pyspark的notebook。環境如何搭建這裏就不多說了。
當然了,下面的代碼也可以在PyCharm裏實現。
3、創建一個SparkSession
SparkSQL支持scala、java、python和R。以官網示例python爲例:
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
其中:
- 在pyspark中換行要 加入
\
.getOrCreate()
指的是如果當前存在一個SparkSession就直接獲取,否則新建。.enableHiveSupport()
使我們可以從讀取或寫入數據到hive。
我們還可以自定義配置,例如定義spark任務執行時的內存:
from pyspark.sql import SparkSession
myspark = SparkSession.builder \
.appName('compute_customer_age') \
.config('spark.executor.memory','2g') \
.enableHiveSupport() \
.getOrCreate()
4、基於SparkSession操作
Create DataFrame:從hive讀數據
sql = """
SELECT id as customer_id,name, register_date
FROM [db_name].[hive_table_name]
limit 100
"""
df = myspark.sql(sql)
df.show()
df.show()
可以預覽數據,默認顯示前20行,df.show(n)
可以顯示前n行。
df.show()
結果如圖:
關於SparkSession的介紹就到這裏了,博主也是邊學習邊總結經驗,把踩到的坑記錄下來。