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

标签 python apache-spark pyspark databricks delta-lake

我正在查询表,但使用两种方式得到不同的结果,我想了解原因。

我使用 Delta 位置创建了一个表。我想查询我存储在该位置的数据。我正在使用亚马逊 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。

我目前的结果是:

enter image description here

我希望两种方式都能得到相同的结果。

最佳答案

您返回的 1 实际上是行数 - 而不是实际结果。将sql语句修改为:

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

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

关于python - 使用 Pyspark-SQL 与 Pyspark 使用 Delta 格式查询表有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56496821/

相关文章:

python - 如何展平列中的层次索引

hadoop - 我可以强制 YARN 使用 Application Master 容器的主节点吗?

hadoop - Spark-Streaming CustomReceiver 未知主机异常

apache-spark - 使用 spark-xml 从 pyspark 数据框中选择嵌套列

apache-spark - spark2.xx 是否支持 delta lake

python - 删除 python django 模块中 content_id 和 ip_address 相同的重复项

python - 如何将python变量变成小写?

scala - 如何对两个数据帧中的列进行分组,然后在行之间应用聚合差异函数?

apache-spark - 如何在 databricks 中的字符串内使用 %run 运行代码

python - Python 2.7 中有什么类似于 Go 的 `time.Tick` 或 Netty 的 `HashedWheelTimer` 吗?