# Spark - SparkSession Spark session: Đại diện cho khả năng tương tác với executors trong 1 chương trình. Spark session chính là entry point của mọi chương trình Spark. Từ SparkSession, có thể tạo RDD/ DataFrame/ DataSet, thực thi SQL… từ đó thực thi tính toán phân tán. [![sparksession.jpeg](https://laptrinh.vn/uploads/images/gallery/2021-02/scaled-1680-/sparksession.jpeg)](https://laptrinh.vn/uploads/images/gallery/2021-02/sparksession.jpeg) Spark Session bao gồm tất cả các API context có sẵn như: - Spark Context - SQL Context - Streaming Context - Hive Context ##### Khởi tạo SparkSession trong Spark-shell Mặc định, Spark shell cung cấp một `spark` object, có thể sử dụng để khởi tạo các biến: ```Java scala> val sqlcontext = spark.sqlContext ``` ##### Khởi tạo SparkSession trong chương trình Scala Để khởi tạo SparkSession trong Scala hoặc Python, bạn cần sử dụng phương thức builder() và getOrCreate(): ```Java val spark = SparkSession.builder() .master("local[1]") .appName("Laptrinh.vn") .getOrCreate(); ``` `master()` - Nếu bạn đang chạy trên cluster, bạn cần sử dụng master name như một đối số của master(), thông thường nó là `yarn` hoặc `mesos` - Sử dụng `local[x]` khi chạy ở chế độ standalone, x (số int > 0) - là số partition được tạo khi sử dụng RDD, DataFrame, and Dataset. Lý tưởng nhất, x là số CPU core bạn có. `appName()` - Tên của application. `getOrCreate()` - Return a SparkSession object nếu đã tồn tại, ngược lại sẽ tạo mới. ##### SparkSesssion Method
**STT****Method****Mô tả**
1versionReturn Spark version
2builderKhởi tạo new SparkSession
3createDataFrameKhởi tạo DataFrame từ collection và RDD
4createDatasetKhởi tạo Dataset từ DataFrame, Collection và RDD
5emptyDataFrameKhởi tạo một empty DataFrame
6emptyDatasetKhởi tạo một empty Dataset
7getActiveSessionReturn một active SparkSession
8implicitsTruy cập một nested Scala object
9readTrả về một thể hiện của lớp DataFrameReader, được sử dụng để đọc các bản ghi từ csv, parquet, avro và các định dạng tệp khác vào DataFrame.
10readStreamTrả về một thể hiện của lớp DataStreamReader, nó được sử dụng để đọc dữ liệu truyền trực tuyến, có thể được sử dụng để đọc dữ liệu truyền trực tuyến vào DataFrame.
11sparkContextTrả về một SparkContext.
12sqlTrả về DataFrame sau khi thực thi SQL được đề cập.
13sqlContextTrả về SQLContext.
14stopDừng SparkContext hiện tại.
15tableTrả về DataFrame của một bảng hoặc dạng xem.
16udfTạo một UDF Spark để sử dụng nó trên DataFrame, Dataset và SQL.