根据内部字段过滤嵌套的 PySpark DataFrame

Filtering a nested PySpark DataFrame based on the internal fields

我有一个 DataFrame,其样本元素是(通过 take(1) 获得):

[Row(id=u'1', objects=Row('a'=Row(fav=True, ratio=0.5), 'b'=Row(fav=False, ratio=0.0))]

也就是说,结构是复合的,因此列 objects 是一个行数组(然后它们是复合的,并且它们包含两个字段)。

如何根据嵌套元素(即对象的内容)进行过滤?假设我要搜索 ID 为“1”的行,即对象 'b' 上的比率,例如?

试试这个:

>>> df = sc.parallelize([Row(id=u'1', objects=Row(a=Row(fav=True, ratio=0.5), b=Row(fav=False, ratio=0.0)))]).toDF()
>>> df.where("id = 1").select("objects.a.ratio").show()
+-----+
|ratio|
+-----+
|  0.5|
+-----+