2015-12-16 148 views
-1

如何將數據幀轉換爲多列 我可以得到RDD [org.apache.spark.sql.Row],但我需要一些可用於組織的東西。 apache.spark.mllib.fpm.FPGrowth,ei RDD [數組[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'後面加上'distinct'或者連續值和列名以確保唯一性。 – zero323

+0

是的,這很有幫助 – devopslife

相關問題