如何在csv文件上执行基本统计数据,以使用Spark Scala探索数字和非数字变量



导入的csv文件如下所示:

MR; IT;  UPI; CAE; IIL;                ED;   NS;                  DATE; DUIOD;NBOPP;
30;  0; null;   2;   0; bgpel:10PT-MIP   ; null; 2013-05-20 21:03:00.0;   300;null;
20;  0; null;   4;   1; bzrgfel:125TZ-ATR; null; 2013-04-01 19:50:02.0;   302;null; 
10;  2; null;   2;   0; bhtuyel:105MF-AXI; null; 2013-04-26 17:12:00.0;   298;null;

我是Spark的新手,我想执行基本的统计,如

  • 获取数值变量的最小值、最大值、平均值、中位数和标准差
  • 获取非数值变量的频率值

我的问题是:

  • 与什么类型的对象是更好的工作,以及如何导入我的csv到该类型(RDD, DataFrame,…)?
  • 如何轻松完成这些基本统计?

我尝试过RDD,但可能有更好的方法:

val csv=sc.textFile("myFile.csv");  
val summary: MultivariateStatisticalSummary = Statistics.colStats(csv)

得到如下错误:

error: type mismatch;
found   : org.apache.spark.rdd.RDD[String]
required: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]

github上有一个开源库spark-csv。您可以将其用于解析和其他转换。您还可以使用此代码直接将csv转换为数据框架。

sqlContext.read().format("com.databricks.spark.csv").options(Options).load();

最新更新