sparkr基本操作1
由于装的sparkr是1.4版本的,老版本的很多函数已经不再适用了。
在2台服务器的组成的集群中测试了一版数据,熟悉下这个api的基本操作。
libpath <- .libPaths()
libpath <- c(libpath, "/home/r/spark/spark-1.4.0-bin-hadoop2.4/R/lib")
.libPaths(libpath)
rm(libpath)
library(SparkR)
#没有默认找到变量 需单独设置,也可以在sparkR.init()里设置
Sys.setenv(SPARK_HOME="/home/r/spark/spark-1.4.0-bin-hadoop2.4/")
#单主机启动
sc <- sparkR.init()
#集群启动
sc <- sparkR.init("spark://master机器ip:监听端口")
#失效
# sc <- sparkR.init(sparkPackages="com.databricks:spark-csv_2.11:1.0.3")
sqlContext <- sparkRSQL.init(sc)
df <- createDataFrame(sqlContext, iris)
t <- head(summarize(groupBy(df, df$Species), count=n(df$Sepal_Length), m=sum(df$Sepal_Length)))
#读取数据将其转为json格式 以便sparkr读取
pay.data <- read.table("/tmp/pay.dat", stringsAsFactors = F, sep="\t")
names(pay.data) <- c("user", "money")
df.pay <- createDataFrame(sqlContext, pay.data)
#createdataframe函数在原始data.frame很大时基本被huang住,不知道是什么原因
json <- apply(pay.data, 1, toJSON)
# json <- toJSON(pay.data[i, ])
write.table(json, file="/tmp/1.json", col.names = F,
row.names=F, append=T, quote = F)
# }
write.table(josn1, file="http://183.60.122.213:7070/tmp/1.json", col.names = F, row.names=F, quote = F)
pay1.json <- read.df(sqlContext, "/home/r/spark/spark-1.4.0-bin-hadoop2.4/examples/src/main/resources/people.json",
"json")
#默认只支持默认只支持json和Parquet 格式文件,文件需要在work服务器上
pay.json <- read.df(sqlContext, "/tmp/1.json",
"json")
pay.json$money1 <- cast(pay.json$money, "double")
#将数据按帐号汇总统计后排序 输出
pay.account <- agg(groupBy(pay.json, pay.json$user), money=sum(pay.json$money1),
num=n(pay.json$user))
pay.account1 <- arrange(pay.account, desc(pay.account$money), desc(pay.account$num))
write.df(pay.json, "/tmp/account1", "json")
分组统计了500w+的充值数据 并且排序后写成json文件到磁盘 时间是22s+,比ddply要快,4700w耗时约26s,再大的数据暂时没有统计了。
理解的很粗浅,sparkr适用于r无法统计的大批数据的预处理,可以将简单预处理的汇总数据返回给R加以建模分析。其他还有待后续深入了解。
参考:
1)简单介绍http://people.apache.org/~pwendell/spark-releases/latest/sparkr.html#sparkr-dataframes
2)常用函数http://people.apache.org/~pwendell/spark-releases/latest/api/R/index.html
sparkr基本操作1的更多相关文章
- SparkR安装部署及数据分析实例
1. SparkR的安装配置 1.1. R与Rstudio的安装 1.1.1. R的安装 我们的工作环境都是在Ubuntu下操作的,所以只介绍Ubuntu下安装R的方法 ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- 三、Redis基本操作——List
小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...
- 二、Redis基本操作——String(实战篇)
小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...
- 一、Redis基本操作——String(原理篇)
小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...
- Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- C++ map的基本操作和使用
原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...
随机推荐
- Android 自定义属性动画&Camera动画
摘要: Android 自定义属性动画&Camera动画 1.相关知识点 对于Androi的帧动画,可以制作gif图片,有时为了能够动态的生成帧动画,就得需要使用代码构建了 Animati ...
- InnoDB Master Thread I/O Rate详解
一.innodb 在刷盘时要面对的问题: 1.对于innodb 的master thread 这个线程来说,它会在后台执行许多的任务,这些任务大多数都是与IO操作相关的, 比如“刷新脏页到磁盘”.“合 ...
- FreeBSD搭建SVN服务器
我最喜欢使用的OS就是FreeBSD,而且现在刚好有一台FreeBSD服务器,所以我想把我的SVN服务器迁移到FreeBSD上,再配合hudson和ant就可以自动编译了. 第一步:安装svn: 在安 ...
- 在 Visual Studio 2013 中使用 JavaScript 的 IntelliSense
原本JavaScript直接在页面中引用的时候,智能感知会直接根据js文件的内容来获得提示.但是由于在新的ASP.NET中使用了Bundle,js文件不是直接在页面中引用了,所以智能感知也就出了问题. ...
- Mvc4 Layout布局与页面SEO信息title,keyword,description
工作已经五个年头了,在进入工作岗位时最初在.net 2.0平台一直到现在的.net 4.0平台下,开发了不少的winform.webform项目:五年的工作时间,在公司主持开发和维护了不少的电子商务w ...
- angular学习笔记(五)-阶乘计算实例(3)
同样是上一个例子,我们要求并非实时的计算结果,而是等到用户确定自己已经输入完毕,然后进行计算: <!DOCTYPE html> <html ng-app> <head&g ...
- Ubuntu C/C++开发环境的安装和配置
安装ubantu会自动安装GCC,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,l ...
- linux命令(26):Bash Shell 获取进程 PID
转载地址:http://weyo.me/pages/techs/linux-get-pid/ 根据pid,kill该进程:http://www.cnblogs.com/lovychen/p/54113 ...
- Uboot的bad_save_user_regs
下面是一个宏定义,从名字“bad_save_user_regs”就可以猜测它是用来保存程序“出错”时用户态的寄存器的值. 从下面的“use bad_save_user_regs for abort/p ...
- LeetCode: Spiral Matrix 解题报告
Spiral MatrixGiven a matrix of m x n elements (m rows, n columns), return all elements of the matrix ...