Spark SQL: Tạo Temp View từ DataFrame

Tạo Temp View

Bạn có thể đăng ký bất kỳ DataFrame nào như một bảng hoặc view (một bảng tạm thời) và truy vấn nó bằng cách sử dụng SQL thuần túy với hàm spark.sql (nhớ, spark là biến SparkSession của chúng ta).

pythonSao chép mãfrom pyspark.sql import SparkSession

# Tạo một SparkSession
spark = SparkSession.builder.appName("TempViewExample").getOrCreate()

# Đăng ký DataFrame là một Temp View
df.createOrReplaceTempView("flight_data")

# Truy vấn Temp View bằng SQL
sql_way = spark.sql("""
    SELECT DEST_COUNTRY_NAME, count(1)
    FROM flight_data
    GROUP BY DEST_COUNTRY_NAME
""")

# Truy vấn DataFrame bằng cách sử dụng API DataFrame
df_way = df \
  .groupBy("DEST_COUNTRY_NAME")\
  .count()

Kiểm tra số lượng Temp Views

pythonSao chép mã# Lấy danh sách các Temp Views từ catalog
temp_views_list = spark.catalog.listTables()

# Đếm số lượng Temp Views
num_temp_views = len(temp_views_list)

# In ra danh sách Temp Views và số lượng
print(f"Danh sách {num_temp_views} Temp Views:")
for temp_view in temp_views_list:
    print(temp_view.name)

createOrReplaceTempView và registerTempTable

Cả createOrReplaceTempView và registerTempTable đều được sử dụng để tạo các view tạm thời từ DataFrame, làm cho chúng có sẵn cho các truy vấn SQL. Tuy nhiên, createOrReplaceTempView là phương pháp được khuyến nghị để tạo các view tạm thời trong Apache Spark, cung cấp tính tương thích và chức năng tốt hơn so với registerTempTable đã lỗi thời.

6 thoughts on “Spark SQL: Tạo Temp View từ DataFrame

  1. We absolutely love your blog and find many
    of your post’s to be exactly I’m looking for. Would you offer guest writers to write content to suit your needs?
    I wouldn’t mind creating a post or elaborating on some of
    the subjects you write in relation to here. Again, awesome weblog!

  2. Do you have a spam issue on this website; I also am a blogger, and I was curious about your
    situation; many of us have developed some
    nice practices and we are looking to exchange methods with other folks, please shoot
    me an email if interested.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *