Pyspark 相同的代码从不同的运行返回不同的结果

Pyspark 相同的代码从不同的运行返回不同的结果,pyspark,jupyter-notebook,Pyspark,Jupyter Notebook,在我的代码中,有一个数据帧是我从配置单元表创建的。我用fonction过滤器做了一个简单的过滤器。但结果是随机的:我多次执行同一个包含过滤器的单元格,有时返回行,有时不返回。我确信预期结果中只有一行。并且在源文件上没有其他工作同时进行 df = spark.sql("select id from hive_table limit 100") df.filter(col('id') == 27654909) 当然,我不是pyspark方面的专家,但你的症状听起来像是限制实际上控制了搜索的深度,

在我的代码中,有一个数据帧是我从配置单元表创建的。我用fonction过滤器做了一个简单的过滤器。但结果是随机的:我多次执行同一个包含过滤器的单元格,有时返回行,有时不返回。我确信预期结果中只有一行。并且在源文件上没有其他工作同时进行

df = spark.sql("select id from hive_table limit 100")

df.filter(col('id') == 27654909)
当然,我不是pyspark方面的专家,但你的症状听起来像是限制实际上控制了搜索的深度,而不是返回的记录结果的最大数量


因为我认为这是在一个开发环境中,如果删除limit子句,您会100%成功吗?

这可能是数据帧设置方式的问题。你能提供方案/结构吗?这是导致“问题”的限制,见我下面的评论。有道理。我只是不确定id是否与索引相同,或者是您设置的任意id。很高兴你解决了这个问题。这是随机返回行数的限制。这是spark关于limit的规范:limit(num)[source]将结果计数限制为指定的数字。我测试一列的“order by”,然后限制,它总是返回相同的结果。df=spark.sql(“按id限制100从配置单元表顺序选择id”)啊,m'kay。那么你应该把你的回答标记为答案,因为你有一个解决办法。我会向Spark社区寻求进一步的帮助,以调试您看到的不受欢迎的行为。