从Pyspark DataFrame中的选定行获取特定字段

发布于 2021-01-29 17:12:29

我通过内置火花数据帧 pyspark 从JSON文件

sc = SparkContext()
sqlc = SQLContext(sc)

users_df = sqlc.read.json('users.json')

现在,我要访问 selected_user 数据,这是它的_id字段。我可以

print users_df[users_df._id == chosen_user].show()

这给了我完整的用户行。但是,假设我只想要Row中的一个特定字段,例如用户性别,我将如何获得它?

关注者
0
被浏览
158
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    只需过滤并选择:

    result = users_df.where(users_df._id == chosen_user).select("gender")
    

    或搭配 col

    from pyspark.sql.functions import col
    
    result = users_df.where(col("_id") == chosen_user).select(col("gender"))
    

    最后,PySparkRow只是tuple带有一些扩展名的一个,因此您可以例如flatMap

    result.rdd.flatMap(list).first()
    

    map类似这样的东西:

    result.rdd.map(lambda x: x.gender).first()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看