2015-12-16 2 views
-1

Как преобразовать данные в несколько столбцов Я могу получить RDD [org.apache.spark.sql.Row], но мне нужно что-то, что я мог бы использовать для org. apache.spark.mllib.fpm.FPGrowth, ei RDD [Array [String]] Как конфертировать?scala dataframe to RDD [array [String]]

df.head 
org.apache.spark.sql.Row = [blabla,128323,23843,11.23,blabla,null,null,..] 

df.printSchema  
|-- source: string (nullable = true) 
|-- b1: string (nullable = true) 
|-- b2: string (nullable = true) 
|-- b3: long (nullable = true) 
|-- amount: decimal(30,2) (nullable = true) 
and so on 

Благодаря

+0

Это может быть полезно, если показать нам содержание RDD и ожидаемый результат :) – zero323

+0

Это все еще не имеет смысла. Что именно представляет корзину здесь? – zero323

ответ

5

Вопроса является расплывчатым, но в целом, вы можете изменить RDD от строки к массиву, проходящему через последовательность. Следующий код будет принимать все столбцы из RDD, преобразовывать их в строку и возвращать их как массив.

df.first 
res1: org.apache.spark.sql.Row = [blah1,blah2] 
df.map { _.toSeq.map {_.toString}.toArray }.first 
res2: Array[String] = Array(blah1, blah2) 

Это, однако, не может быть достаточно, чтобы заставить его работать с MLib, как вы хотите, так как вы не дали достаточно подробно, но это начало.

+1

В целом он не будет работать как вход для 'FPGrowth'. Вы должны, по крайней мере, следовать «toArray» с «отличными» или конкатенатными значениями с именами столбцов, чтобы обеспечить уникальность. – zero323

+0

Да, это полезно – devopslife