АА
https://m.habr.com/ru/company/jugru/blog/325070/
Из других источников видел, что спарк используют как припарку к спрингу. И используют dataframe api
Size: a a a
АА
ЕГ
ЕГ
N
ПФ
AS
K
K
K
N
K
N
K
D
ПФ
D
val numCols = df
.withColumn("letters_size", size($"letters"))
.agg(max($"letters_size"))
.head()
.getInt(0)
df
.select(
(0 until numCols).map(i => $"letters".getItem(i).as(s"col$i")): _*
)
.show()
ЕГ
val numCols = df
.withColumn("letters_size", size($"letters"))
.agg(max($"letters_size"))
.head()
.getInt(0)
df
.select(
(0 until numCols).map(i => $"letters".getItem(i).as(s"col$i")): _*
)
.show()
АА
def flattenDataframe(df: DataFrame): DataFrame = {
val fields = df.schema.fields
val fieldNames = fields.map(x => x.name.replaceAll("\\S+\\s+\\S+", "_").replaceAll("__", "_"))
fields.foreach(field => {
val fieldtype = field.dataType
val fieldName = field.name.replaceAll("\\S+\\s+\\S+", "_").replaceAll("__", "_")
fieldtype match {
case arrayType: ArrayType =>
val fieldNamesExcludingArray = fieldNames.filter(_ != fieldName)
val fieldNamesAndExplode = fieldNamesExcludingArray ++ Array(s"explode_outer($fieldName) as $fieldName")
val explodedDf = df.selectExpr(fieldNamesAndExplode: _*)
return flattenDataframe(explodedDf)
D
D