2016-09-25 61 views
2

我是Scala的新手,爲了對大數據集執行一些分析,我必須使用Scala和Spark的SQL,Mllib和GraphX。我想要做的分析是:Spark上的數據分析Scala

  • 客戶生命週期價值(CLV)
  • 掌措施(度,特徵向量,邊緣介, 親近)的數據是一個CSV文件(60GB(3年跨國數據))位於Hadoop集羣中的 。

我的問題是關於訪問數據和執行上述計算的最佳方法?

  • 我應該將CSV文件中的數據加載到數據框中,並在 上處理數據幀嗎?或
  • 我應該從CSV文件加載數據並將其轉換爲RDD和 然後在RDD上工作?或
  • 是否有任何其他方法來訪問數據並執行分析?

預先感謝您這麼多的幫助..

回答

1

數據框讓你喜歡的sql語法與在作爲RDD給斯卡拉收集像數據處理方法的數據進行工作。

Dataframes的一個額外好處是底層的sprak系統將優化您的查詢,就像sql查詢優化一樣。這在RDD的情況下不可用。

如你是新來的Scala公司強烈推薦最初使用Dataframes API,然後拿起RDD API以後根據需求。

+0

dataframes的有些類型安全的版本是數據集,這是推薦的,因爲更好的數據壓縮的API。對於類型安全問題,有https://github.com/adelbertc/frameless/ – Reactormonk

0

您可以使用Databricks CSV reader API,它易於使用,並返回DataFrame。它會自動推斷數據類型。如果你通過頭文件傳遞它可以自動使用它作爲架構,否則你可以使用StructType構造架構。

https://github.com/databricks/spark-csv 

更新: 如果您正在使用的Spark 2.0版本,默認情況下它支持CSV數據源,請參閱以下鏈接。

https://spark.apache.org/releases/spark-release-2-0-0.html#new-features

請參閱此鏈接瞭解如何使用。 https://github.com/databricks/spark-csv/issues/367