2017-08-11 22 views
0

如何在將結果保存到文本文件之前向Spark SQL查詢結果添加標題?如何在不使用databricks lib的情況下將列標題添加到Spark SQL查詢結果?

val topPriceResultsDF = sqlContext.sql("SELECT * FROM retail_db.yahoo_stock_orc WHERE open_price > 40 AND high_price > 40 ORDER BY date ASC") 

topPriceResultsDF.map(x => x.mkString(",")).saveAsTextFile("/user/sparkuser/myspark/data/output/yahoo_above40_results(comma).csv") 

它僅保存數據,但我需要添加頭像 (日期,open_price,HIGH_PRICE,LOW_PRICE,close_price,體積,adj_price)也是如此。如果有人有想法請幫助!我無法使用databricks庫。

O/P應該像

date,open_price,high_price,low_price,close_price,volume,adj_price 
1997-07-09,40.75008,45.12504,40.75008,43.99992,37545600,1.83333 

謝謝!

+0

你是從蜂巢表中讀取? –

+0

從Hive表可以,但它不應該產生任何區別。 –

+0

你可以試試這個屬性'sqlContext.setConf(「set hive.cli.print.header」,「true」)'確保你使用'HiveContext'。 –

回答

0

如果你想爲每個文件頭:

val header: String = ... 

df.rdd.map(x => x.mkString(",")) 
    .mapPartitions(iter => Iterator(header) ++ iter) 
    .saveAsTextFile(...) 

如果你想爲第一個:

df.rdd.map(x => x.mkString(",")) 
    .mapPartitionsWithIndex { 
    case (0, iter) => Iterator(header) ++ iter 
    case (_, iter) => iter } 
    .saveAsTextFile(...) 
+0

謝謝它的工作! –

相關問題