2016-10-20 4 views
0

У меня есть dataframe (Df) следующего вида:Преобразование dataframe в искровом Скале

+-----+----- + 
|id |items | 
+-----+----- + 
| 0 | item1 | 
| 1 | item2 | 
+-----+----- + 

Здесь первый идентификатор столбца является INT и второй детали столбцов имеет тип структуры. Допустим, элемент, как показано ниже:

 item1 
     |-a 
     |-b 
     |-c 
     |-d 

Я хочу результирующую таблицу формы

+-----+----- + 
    |id |col2 | 
    +-----+----- + 
    | 0 | a | 
    | 0 | b | 
    | 0 | c | 
    | 0 | d | 
    | 1 | a | 
    | 1 | b | 
    | 1 | c | 
    | 1 | d | 
    +-----+----- + 

Я хочу расширить-структуру для каждого столбца?
Как это сделать?

ответ

1

Этот peice кода может решить вашу проблему:

df.rdd.flatMap{row=> 
val id=row.getInt(0) 
val arrayOfString=row.getAs[Array[String]](1) 
arrayOfString.map(value=>(id,value) 
}.toDF("id","col2") 

Примечание: этот код не тестировался!

+0

В этом типе столбцов «элементы» есть struct. Как это может быть тип casted to array [string] – satyambansal117

+0

Затем удалите массив [String] и поместите свое собственное значение, в котором вы хотите вынуть –

Смежные вопросы