Структуры отображаются в Row
в UDF, поэтому к массиву структур можно получить доступ к Seq[Row]
, например:
def extractObjs: UserDefinedFunction = udf {
(objs: Seq[Row]) ⇒
objs.map {
obj ⇒
MyObj(
obj.getAs[Boolean]("FieldA"),
obj.getAs[String]("FieldB"),
extractNested(obj.getAs[Seq[Row]]("FieldC"))
)
}
}
def extractNested(nesteds: Seq[Row]): Array[MyNested] = {
nesteds.map(r => MyNested(r.getAs[Long]("Field1"),r.getAs[String]("Field2"))).toArray
}
Существует проблема [
- это специальный символ регулярного выражения, поэтому необходим параметр regex=False
:
df['col1'].str.contains('[', regex=False).any()
Или управляющее значение по \
:
df['col1'].str.contains('\[').any()