Pyspark datafame.limit()和drop_duplicates()提供错误的输出

问题描述 投票:-1回答:1

我正在使用Azure Databricks群集。

  1. 工作者和驱动程序类型:Standard_DS4_v2规格:28.0 GB内存,8核心,1.5 DBU
  2. Databricks运行时版本:6.1(包括ApacheSpark 2.4.4,Scala 2.11)

我有一个pyspark数据框ttonag_algnd_prdictn_df1。它大约有32,000行。此数据帧是使用spark.read(...)从DB2中提取的。我只是使用limit关键字从其中取出10行。


a = ttonag_algnd_prdictn_df1.limit(10)

a.show()提供(出于可读性考虑,我确实将文件放到了文本文件中,并使其全部在1行中可见)

TONAG_ALGND_PRDICTN_ID,TONAG_MGT_YR,LINE_SGMT_NBR|TRAK_TYP_CD|BGN_MP_NBR|END_MP_NBR|TRAK_SDTRAK_NBR|ALGND_BGN_MP_NBR|ALGND_END_MP_NBR 1 2017 1 M 165.475 168.351 0 165.475 168.351 1 2018 1 M 165.475 168.351 0 165.475 168.351 1 2019 1 M 165.475 168.351 0 165.475 168.351 2 2016 1 M 395.225 405.698 0 395.225 405.698 2 2017 1 M 395.225 405.698 0 395.225 405.698 2 2018 1 M 395.225 405.698 0 395.225 405.698 2 2019 1 M 395.225 405.698 0 395.225 405.698 3 2016 1 M 412.005 422.198 0 412.005 422.198 3 2017 1 M 412.005 422.198 0 412.005 422.198

现在我执行以下操作。

  1. 'a'和drop_duplicates中选择列的子集。
  2. unique_mp_pair_df = a.select("LINE_SGMT_NBR","TRAK_TYP_CD","TRAK_SDTRAK_NBR","ALGND_BGN_MP_NBR","ALGND_END_MP_NBR") unique_mp_pair_df.show()

+-------------+-----------+---------------+----------------+----------------+ |LINE_SGMT_NBR|TRAK_TYP_CD|TRAK_SDTRAK_NBR|ALGND_BGN_MP_NBR|ALGND_END_MP_NBR| +-------------+-----------+---------------+----------------+----------------+ | 1| M| 0 | 165.47500| 168.35100| | 1| M| 0 | 165.47500| 168.35100| | 1| M| 0 | 165.47500| 168.35100| | 1| M| 0 | 165.47500| 168.35100| | 1| M| 0 | 395.22500| 405.69800| | 1| M| 0 | 395.22500| 405.69800| | 1| M| 0 | 395.22500| 405.69800| | 1| M| 0 | 395.22500| 405.69800| | 1| M| 0 | 412.00500| 422.19800| | 1| M| 0 | 412.00500| 422.19800| +-------------+-----------+---------------+----------------+----------------+

unique_mp_pair_df = unique_mp_pair_df.drop_duplicates()

现在,我希望这些行是唯一的。但是我得到的值根本没有意义。

unique_mp_pair_df.show()

+-------------+-----------+---------------+----------------+----------------+ |LINE_SGMT_NBR|TRAK_TYP_CD|TRAK_SDTRAK_NBR|ALGND_BGN_MP_NBR|ALGND_END_MP_NBR| +-------------+-----------+---------------+----------------+----------------+ | 7101| M| 0 | 11.29000| 24.88200| +-------------+-----------+---------------+----------------+----------------+

上面是ttonag_algnd_prdictn_df1

中的一行。但是将行数限制为10后,则不包括在内。如上所示通过执行[[a.show()有人请帮助我理解这一点。我究竟做错了什么?非常感谢您的帮助。

我正在使用Azure Databricks群集。工作者和驱动程序类型:Standard_DS4_v2规格:28.0 GB内存,8核,1.5 DBU Databricks运行时版本:6.1(包括Apache Spark 2.4.4,Scala 2.11)I ...

apache-spark pyspark apache-spark-sql pyspark-sql databricks
1个回答
0
投票
您必须了解执行spark的惰性,并且限制是随机的。
© www.soinside.com 2019 - 2024. All rights reserved.