Pyspark 火花通过局部和贯穿纱线时,结果会有所不同?

Pyspark 火花通过局部和贯穿纱线时,结果会有所不同?,pyspark,yarn,data-science,Pyspark,Yarn,Data Science,在pyspark脚本中,我首先对开始和结束位置进行集群,然后删除具有相同开始和结束位置的数据。我选择具有相同起始和结束cellid的数据,并将其startclusterid、endclusterid和left连接到数据集,然后取出不以相同起始和结束位置开始的数据 我通过以下命令多次运行此查询,每次都得到不同的结果 joined_data_filtered = spark.sql("SELECT T.TransactionId, T.CustomerId, T.StartClusterId, T.

在pyspark脚本中,我首先对开始和结束位置进行集群,然后删除具有相同开始和结束位置的数据。我选择具有相同起始和结束cellid的数据,并将其startclusterid、endclusterid和left连接到数据集,然后取出不以相同起始和结束位置开始的数据

我通过以下命令多次运行此查询,每次都得到不同的结果

joined_data_filtered = spark.sql("SELECT T.TransactionId, T.CustomerId, T.StartClusterId, T.EndCentermostClusterId, T.EndClusterId, T.StartCellId, T.EndCellId, T.EndCentermostCellId, T.EndCentermostLatitude, T.EndCentermostLongitude FROM joined_trip_data AS T LEFT JOIN(SELECT CustomerId,StartClusterId,EndClusterId FROM joined_trip_data WHERE EndCellId = StartCellId GROUP BY CustomerId, StartClusterId,EndClusterId) AS D ON T.CustomerId = D.CustomerId AND T.StartClusterId = D.StartClusterId AND T.EndClusterId = D.EndClusterId WHERE D.CustomerId IS NULL")
所以我在没有连接条件的情况下运行了两个数据集,每次都得到相同的计数。但当我通过spark submit--master local[4]命令运行脚本时,结果并没有改变

我使用DBSCAN算法对开始和结束纬度、经度和返回的clusterid、Clustercellid进行聚类。当我通过纱线多次运行时,给定集群会得到不同的clusterid,但我们认为对于给定会话,clusterid不会改变

位置“A”的启动簇-第一条贯穿纱线

yarn command - spark-submit --master yarn --deploy-mode client --driver-memory 4g --executor-memory 6g --executor-cores 3 --num-executors 4
 startcluterid               startcellid

  1                           11126
  1                           11127
为位置“a”启动群集-第二个贯穿纱线

yarn command - spark-submit --master yarn --deploy-mode client --driver-memory 4g --executor-memory 6g --executor-cores 3 --num-executors 4
 startcluterid               startcellid

  1                           11126
  1                           11127
聚类前的初始数据集

 startcluterid        startcellid

  5                  11126
  5                  11127

有谁能告诉我有什么问题吗?

嗨,欢迎来到stackoverflow。你的问题很难理解,可能会使用更多的格式-请这样做,以便社区能够更容易地帮助你。我可以告诉你,在某些情况下,使用带有RDD的mapPartitions无法给出100%正确的结果。但这里的情况并非如此。“纱线”命令在此不添加任何值。你能解释一下吗?您需要提供一个输入示例,例如10个REC。另外一个有趣的问题。我想知道,幕后优化是否能像RDD一样产生不到100%的正确结果——不确定如何产生,但肯定对这个场景感兴趣。这进展如何?你确定还是这样吗?你能把代码发给我吗,因为我对这方面也很感兴趣。@thebluephantom问题仍然存在,我分享了输入示例我对pysaprk和rdd不熟悉,我需要运行这个脚本以达到优化目的。OK,稍后我会看。很好奇。