使用Pyspark-SQL和Pyspark查询Delta格式的表有什么区别?

zvokhttg  于 2022-12-11  发布在  Spark
关注(0)|答案(1)|浏览(136)

我正在查询表,但使用两种方式得到不同的结果,我想了解原因。
我使用Delta位置创建了一个表。我想查询存储在该位置的数据。我使用的是Amazon S3。
我创建的表如下所示:

spark.sql("CREATE TABLE bronze_client_trackingcampaigns.TRACKING_BOUNCES (ClientID INT, SendID INT, SubscriberKey STRING) USING DELTA LOCATION 's3://example/bronze/client/trackingcampaigns/TRACKING_BOUNCES/delta'")

我想使用下一行查询数据:

spark.sql("SELECT count(*) FROM bronze_client_trackingcampaigns.TRACKING_BOUNCES")

但结果不好,应该是41832,但返回1。
当我以其他方式做了同样的查询时:

spark.read.option("header", True).option("inferSchema", True).format("delta").table("bronze_client_trackingcampaigns.TRACKING_BOUNCES").count()

我得到的结果是41832。
我目前的结果是:

我希望两种方法都有相同的结果。

nbysray5

nbysray51#

返回的1实际上是行计数,而不是实际结果。将sql语句更改为:

df = spark.sql("SELECT COUNT(*) FROM bronze_client_trackingcampaigns.TRACKING_BOUNCES")
df.show()

您现在应该会得到相同的结果。

相关问题