【发布时间】:2020-10-15 18:33:22
【问题描述】:
我有一个包含一列数组字符串的数据框 A。
...
|-- browse: array (nullable = true)
| |-- element: string (containsNull = true)
...
例如三个样本行将是
+---------+--------+---------+
| column 1| browse| column n|
+---------+--------+---------+
| foo1| [X,Y,Z]| bar1|
| foo2| [K,L]| bar2|
| foo3| [M]| bar3|
另一个包含一列字符串的Dataframe B
|-- browsenodeid: string (nullable = true)
它的一些示例行将是
+------------+
|browsenodeid|
+------------+
| A|
| Z|
| M|
如何过滤 A 以便保留 browse 包含来自 B 的任何 browsenodeid 值的所有行?根据上述示例,结果将是:
+---------+--=-----+---------+
| column 1| browse| column n|
+---------+--------+---------+
| foo1| [X,Y,Z]| bar1| <- because Z is a value of B.browsenodeid
| foo3| [M]| bar3| <- because M is a value of B.browsenodeid
如果我只有一个值,那么我会使用类似的东西
A.filter(array_contains(A("browse"), single_value))
但是我该如何处理值的列表或 DataFrame?
【问题讨论】:
标签: apache-spark apache-spark-sql spark-dataframe