sparkR处理Gb级数据集
spark集群搭建及介绍:敬请关注
数据集:http://pan.baidu.com/s/1sjYN7lF
总结:使用sparkR进行数据分析建模相比R大致有3-5倍的提升
查看原始数据集:通过iris数据集生成
[root@master data]#pwd
/data
[root@master data]#ls -lhsrt iris1g.txt
1.3G -rw-r--r-- 1root root 1.3G Feb 16 14:16 iris1g.txt
登录sparkR:
sparkR --masteryarn-client --num-executors 15
#1、载入数据:47671650千万数据,耗时1.60118mins
> (time1 <-Sys.time())
[1] "2016-02-1810:04:08 CST"
> data_iris <-read.table("/data/iris1g.txt", stringsAsFactors=T, sep=",",header=T, comment="", quote=NULL, encoding="UTF-8")
> Sys.time() -time1
Time difference of1.60118 mins
#使用data.table中的fread读取数据:4000千万数据,耗时1.910114
mins
library(data.table)
(time1 <-Sys.time())
data_iris <- fread("D:\\R大数据集/iris1g.txt",stringsAsFactors=T, sep=",",
header=T, encoding="UTF-8")
Sys.time() - time1
#2、数据预处理
> dim(data_iris)
[1] 47671650 5
str(data_iris)
> str(data_iris)
'data.frame': 47671650obs. of 5 variables:
$ X.Sepal.Length.: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ X.Sepal.Width. : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ X.Petal.Length.: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ X.Petal.Width. : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ X.Species. : Factor w/ 3 levels"\"setosa\"","\"versicolor\"",..: 1 1 11 1 1 1 1 1 1 ...
> names(iris)
[1]"Sepal.Length" "Sepal.Width" "Petal.Length""Petal.Width" "Species"
>names(data_iris)
[1]"X.Sepal.Length." "X.Sepal.Width." "X.Petal.Length.""X.Petal.Width."
[5]"X.Species."
>
>names(data_iris) <- names(iris)
>names(data_iris)
[1]"Sepal.Length" "Sepal.Width" "Petal.Length""Petal.Width" "Species"
#3、创建训练集和測试集数据
library(caret)
#创建训练集和測试集数据:耗时6.402254 secs
> (time1 <-Sys.time())
[1] "2016-02-1810:10:35 CST"
> ind <-base:::sample(3, nrow(data_iris), prob=c(0.3, 0.2, 0.5), replace=T)
> train <-data_iris[ind==1, ]
> test <-data_iris[ind==2, ]
> Sys.time() -time1
Time difference of6.402254 secs
#使用createDataPartition导致内存溢出
#(time1 <-Sys.time())
#index <-createDataPartition(data$Species, nrow(data), p=0.7, list=F)
#Sys.time() - time1
#train <-data[index, ]
#test <-data[-index, ]
> dim(train)
[1] 14301827 5
> dim(test)
[1] 9533737 5
memory.size()
gc()
#4、建模
#1)随机森林
#library(randomForest)
#model <-randomForest(train$X.Species.~., data=train, ntree=50, nPerm=10, mtry=3,proximity=T, importance=T)
#随机森林建模导致内存溢出
#2)使用决策时间建模:1.891634
mins
library(party)
> (time1 <-Sys.time())
[1] "2016-02-1810:12:08 CST"
> model <-ctree(Species~., data=train)
> Sys.time() -time1
Time difference of
>print(object.size(model), units="Mb")
6372.7 Mb
#str(model)
> summary(model)
Length Class Mode
1 BinaryTree S4
#5、预測
> (time1 <-Sys.time())
[1] "2016-02-1810:14:49 CST"
> pred <-predict(model, test)
> Sys.time() -time1
Time difference of36.58139 secs
#6、模型评估
table(pred,test$Species)
>mean(pred==test$Species)
[1] 1
>base:::table(pred, test$Species)
pred "setosa""versicolor" "virginica"
"setosa" 3177256 0 0
"versicolor" 0 3178471 0
"virginica" 0 0 3178010
>library(gmodels)
>CrossTable(pred, test$Species)
Cell Contents
|-------------------------|
| N |
| Chi-squarecontribution |
| N / Row Total |
| N / Col Total |
| N / Table Total |
|-------------------------|
Total Observationsin Table: 9533737
| test$Species
pred | "setosa" |"versicolor" | "virginica" | RowTotal |
-------------|--------------|--------------|--------------|--------------|
"setosa" | 3177256 | 0 | 0 | 3177256 |
| 4238091.601 | 1059271.517 | 1059117.882 | |
| 1.000 | 0.000 | 0.000 | 0.333 |
| 1.000 | 0.000 | 0.000 | |
| 0.333 | 0.000 | 0.000 | |
-------------|--------------|--------------|--------------|--------------|
"versicolor"| 0 | 3178471 | 0 | 3178471 |
| 1059271.517 | 4236471.588 | 1059522.895 | |
| 0.000 | 1.000 | 0.000 | 0.333 |
| 0.000 | 1.000 | 0.000 | |
| 0.000 | 0.333 | 0.000 | |
-------------|--------------|--------------|--------------|--------------|
"virginica" | 0 | 0 | 3178010 | 3178010 |
| 1059117.882 | 1059522.895 | 4237086.223 | |
| 0.000 | 0.000 | 1.000 | 0.333 |
| 0.000 | 0.000 | 1.000 | |
| 0.000 | 0.000 | 0.333 | |
-------------|--------------|--------------|--------------|--------------|
Column Total | 3177256 | 3178471 | 3178010 | 9533737 |
| 0.333 | 0.333 | 0.333 | |
-------------|--------------|--------------|--------------|--------------|
```
sparkR处理Gb级数据集的更多相关文章
- python编程之处理GB级的大型文件
一般我们采取分块处理,一次处理固定大小的块. def read_in_chunks(file_obj,chunk_size): """Lazy function (gen ...
- VC++获取一个GB级大文件的字节大小
常规的获得小文件(2.1GB以下)的字节大小可以使用ftell,函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数.使用fseek函数后再调用函数ftell()就能非常容易地确定文 ...
- SQLite剖析之功能特性
SQLite是遵守ACID的轻型数据库引擎,它包含在一个相对较小的C库中.它是D.RichardHipp创建的公有领域项目.不像常见的客户端/服务器结构范例,SQLite引擎不是一个与程序通信的独立进 ...
- HDFS主要特性和体系结构
引言 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统 ...
- 数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径(分享)
Hadoop让大数据分析走向了大众化,然而它的部署仍需耗费大量的人力和物力.在直奔Hadoop之前,是否已经将现有技术推向极限?这里总结了对Hadoop投资前可以尝试的10个替代方案, ...
- 最受IT公司欢迎的50款开源软件
文章来自:云头条编译 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品. 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT ...
- 数据分析≠Hadoop+NoSQL
数据分析≠Hadoop+NoSQL 目录(?)[+] Hadoop让大数据分析走向了大众化,然而它的部署仍需耗费大量的人力和物力.在直奔Hadoop之前,是否已经将现有技术推向极限 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
随机推荐
- 每一个人都懂得敏捷开发 (软件project), 为何产品开发的效率与质量还是这么的烂?
敏捷开发(软件project)是 "设计" 出来的.不是 "学" 来的-- 很多人都一直在质疑敏捷开发能否提高效率与质量? 更有不少人以嘲讽.不屑的口吻看待软件 ...
- vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)
P1543极值问题 Accepted 标签:[显示标签] 背景 小铭的数学之旅2. 描写叙述 已知m.n为整数,且满足下列两个条件: ① m.n∈1,2.-,K ② (n^ 2-mn-m^2)^2=1 ...
- ORM中基于对象查询与基于queryset查询
感谢老男孩~ 一步一步走下去 前面是视图函数 后面是表结构models.py from django.shortcuts import render, HttpResponse from djang ...
- VS2013+PTVS,python编码问题
1.调试,input('中文'),乱码2.调试,print('中文'),正常3.不调试,input('中文'),正常4.不调试,print('中文'),正常 页面编码方式已经加了"# -- ...
- Vuejs componet
Vuejs componet <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...
- net实现ping的方法
class ServicePinger { private static readonly ILog log = LogManager.GetLogger(typeof(ServicePinger)) ...
- zookeeper启动闪退
编辑zkServer.cmd在它的尾行加上 pause 就可以将闪退停住来观察闪退的原因. 遇到Exception in thread "main" java.lang. ...
- 谈谈Vim中实用又好记的一些命令
本文的目的在于总结一些日常操作中比较实用.有规律的Vim命令,而不致于介绍一些基础的Vim知识,比如几种插入模式,hjkl移动命令,dd删除本行,p粘贴 等等,故对Vim基本知识不够熟悉的请参见其 ...
- mongodb 的 curd
增: db.表名.insert({name:'lisi',age:24}); ...
- Python IO编程-组织文件
对于日常中遇到的批量任务,有些可以通过请求python完成自动化,我非常渴望拥有这些能力,在去年学习了python读写文件之后,我马上迫不及待的开始学习‘组织文件’,经过学习,我发现python组织文 ...