在我的Spark Streaming查询中,我要使用一个具有3个字符串成员的URL案例类,如下所示:
url: string
domain: string
topLevelDomain: string
我想创建一个DataFrame
,其中成员之一是URL对象的数组。架构如下:
root
|-- AccountId: integer (nullable = true)
|-- url1: struct (nullable = true)
| |-- url: string (nullable = true)
| |-- domain: string (nullable = true)
| |-- topLevelDomain: string (nullable = true)
|-- finalURLs: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- url: string (nullable = true)
| | |-- domain: string (nullable = true)
| | |-- topLevelDomain: string (nullable = true)
[C0列是URL对象的数组。
稍后,我想在此列上进行转换,以将其转换为字符串列表,根据其他列中的值,该字符串可以为finalURLs
或domain
。
首先,是否有可能是一列case类对象的数组?如果是,那么如何应用上述转换将其简化为字符串数组?
如果要使用案例类,则需要将DataFrame转换为数据集。如果这样做,则需要转换整个记录,而不仅仅是URL。这样的事情会起作用:
topLevelDomain