簡體   English   中英

如何比較 PySpark 中兩個數據幀的計數?

[英]How to compare the counts of two dataframes in PySpark?

我正在使用 PySpark 從數據幀中構建臨時視圖。 作為其中的一部分,我想知道如何比較兩個數據幀的計數,如果它們不匹配,則拋出錯誤。

我的代碼如下所示:

df1 = spark.sql ("""SELECT Col1, Col2, Col3, Col4, Col5 FROM Table1""")
df1.createOrReplaceTempView("df1")

df2 = spark.sql ("""SELECT Col1, Col2 FROM Table2""")
df2.createOrReplaceTempView("df2")

df_join = spark.sql ("""SELECT Table1.Col1, Table1.Col2 FROM Table1 LEFT OUTER JOIN Table2 ON Table1.Col1 = Table2.Col1""")
df_join .createOrReplaceTempView("df_join")

df1 和 df_join 的計數應該始終匹配。 所以,我想比較這兩個數據幀之間的計數,如果不匹配則拋出錯誤。

請在這里尋求幫助...

從連接中,添加帶有條件的計數。

df_join = spark.sql("""
    SELECT 
        Table1.Col1,
        Table1.Col2,
        count(Table1.Col1) as CountDF1,
        count(IF(Table2.Col1 is not null, 1)) as CountDF2
    FROM 
        Table1 
    LEFT OUTER JOIN 
        Table2 
    ON 
        Table1.Col1 = Table2.Col1
""")

並比較這兩個計數。

或者你可以簡單地比較一下:

df1.count() == df2.count()

DataFrame object 有 count() 方法: https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.883688262367878.8388.8382

所以它會很簡單:

if df1.count() != df_join.count():
    raise ValueError('Dataframes counts doesnt match')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM