导入的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();