2016-09-25 50 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