PySpark中选取列唯一值操作失败问题求助
获取Spark DataFrame中obj_type列唯一值的解决方法
别担心,我来帮你搞定这个问题!针对你创建的obj_ds DataFrame,这里有几种简单可靠的方法来获取obj_type列的唯一值:
方法1:使用DataFrame API的distinct()
先选中目标列,再调用distinct()去重,最后展示结果:
obj_ds.select("obj_type").distinct().show()
方法2:使用dropDuplicates()指定列去重
这个方法和distinct()效果类似,可以明确指定要去重的列,逻辑更清晰:
obj_ds.dropDuplicates(["obj_type"]).select("obj_type").show()
方法3:用Spark SQL直接查询
既然你是通过spark.sql()创建的DataFrame,也可以直接写SQL语句来查询唯一值(注意替换成你的实际表名):
spark.sql("SELECT DISTINCT obj_type FROM your_table_name").show()
额外:将唯一值收集到本地变量
如果需要把结果拿到本地Python环境中使用,可以用collect()方法转换:
unique_obj_types = obj_ds.select("obj_type").distinct().rdd.map(lambda x: x[0]).collect() print(unique_obj_types)
可能的失败原因小提示
你之前操作失败大概率是没先选中obj_type列就直接调用去重方法了——比如如果直接写obj_ds.distinct(),会返回整个DataFrame的唯一行,而不是只针对obj_type列的去重结果,一定要先通过select("obj_type")指定目标列哦!
内容的提问来源于stack exchange,提问作者muni
相关产品推荐
相关产品推荐

