Nền tảng Big Data với PySpark
Upendra Devisetty
Science Analyst, CyVerse
Trong PySpark, bạn có thể dùng SparkSQL qua DataFrame API và câu lệnh SQL
DataFrame API cung cấp DSL lập trình chuyên biệt cho dữ liệu
Dễ xây dựng các transformation và action trên DataFrame bằng mã
Câu lệnh SQL ngắn gọn, dễ hiểu và dễ chuyển đổi
Mọi thao tác trên DataFrame cũng có thể làm bằng SQL
Phương thức sql() của SparkSession thực thi câu lệnh SQL
sql() nhận một câu lệnh SQL và trả về kết quả dạng DataFrame
df.createOrReplaceTempView("table1")
df2 = spark.sql("SELECT field1, field2 FROM table1")
df2.collect()
[Row(f1=1, f2='row1'), Row(f1=2, f2='row2'), Row(f1=3, f2='row3')]
test_df.createOrReplaceTempView("test_table")
query = '''SELECT Product_ID FROM test_table'''
test_product_df = spark.sql(query)
test_product_df.show(5)
+----------+
|Product_ID|
+----------+
| P00069042|
| P00248942|
| P00087842|
| P00085442|
| P00285442|
+----------+
test_df.createOrReplaceTempView("test_table")
query = '''SELECT Age, max(Purchase) FROM test_table GROUP BY Age'''
spark.sql(query).show(5)
+-----+-------------+
| Age|max(Purchase)|
+-----+-------------+
|18-25| 23958|
|26-35| 23961|
| 0-17| 23955|
|46-50| 23960|
|51-55| 23960|
+-----+-------------+
only showing top 5 rows
test_df.createOrReplaceTempView("test_table")
query = '''SELECT Age, Purchase, Gender FROM test_table WHERE Purchase > 20000 AND Gender == "F"'''
spark.sql(query).show(5)
+-----+--------+------+
| Age|Purchase|Gender|
+-----+--------+------+
|36-45| 23792| F|
|26-35| 21002| F|
|26-35| 23595| F|
|26-35| 23341| F|
|46-50| 20771| F|
+-----+--------+------+
only showing top 5 rows
Nền tảng Big Data với PySpark