热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Sparklyr

Sparklyr是rstudio社区维护的一个spark的接口。文档Sparklyr文档:https:spark.rstudio.com安装Sparklyr:sparklyr::s

Sparklyr是rstudio 社区维护的一个spark的接口。

文档

Sparklyr 文档:https://spark.rstudio.com

安装

Sparklyr: sparklyr::spark_install(version = "2.3.0", hadoop_version = "2.7"),不依赖于 Spark 版本,spark 2.X 完美兼容 1.X。

Spark 环境配置需要注意的问题:

  1. 下载和 Hadoop 对应版本号的发行版,具体可以通过 sparklyr::spark_available_versions() 查询可用的 spark 版本
  2. JAVA_HOME/SPARK_HOME/HADOOP_HOME 是必须要指定的环境变量,建议使用 JDK8/spark2.x/hadoop2.7
  3. yarn-client/yarn-cluster 模式需要设置环境变量 Sys.setenv(“HADOOP_CONF_DIR”=”/etc/hadoop/conf”)
  4. 连接 Hive 需要提供 Hive 链接配置, 在 spark-connection 初始化时指定对应 hive-site.xml 文件

初始化

sc <- sparklyr::spark_connect(master = "yarn-client",
spark_home = "/data/FinanceR/Spark",
version = "2.2.0",
cOnfig= sparklyr::spark_config())

数据输入输出

以写 Parquet 文件为例, 同理你可以用 SparkR::write.()/sparklyr::spark_write_()等写入其他格式文件到HDFS 上, 比如csv/text

什么是 Parquet 文件? Parquet 是一种高性能列式存储文件格式,比 CSV 文件强在内建索引,可以快速查询数据,目前普遍应用在模型训练过程。

df <- sparklyr::copy_to(sc,faithful,"df")
sparklyr::spark_write_parquet(df,path="/user/FinanceR",mode="overwrite",partition_by = "dt")

数据清洗

library(sparklyr)
library(dplyr)
# 在 mutate 中支持 Hive UDF
remote_df = dplyr::tbl(sc,from = "db.financer_tbl") # 定义数据源表
# 或者 remote_df = dplyr::tbl(sc,from = dplyr::sql("select * from db.financer_tbl limit 10")) #
remote_df %>%
mutate(a = b+2) %>% # 在 mutate 中支持 Hive UDF
filter(a > 2)%>%
group_by(key)%>%
summarize(count = n())%>%
select(cnt = count)%>%
order_by(cnt)%>%
arrange(desc(cnt))%>%
na.omit() ->
pipeline
pipeline %>% sdf_persist() # 大数据集 缓存在集群上
pipeline %>% head() %>% collect() # 小数据 加载到本地

SQL

df <- sc %>%
dplyr::tbl(dplyr::sql('SELECT * FROM financer_tbl WHERE dt = "20180318"'))
sc %>% DBI::dbGetQuery('SELECT * FROM financer_tbl WHERE dt = "20180318" limit 10') # 直接将数据 collect 到本地, 与操作MySQL完全一样
df %>% dbplyr::sql_render() # 将 pipeline 自动翻译为 SQL
# SELECT * FROM financer_tbl WHERE dt = "20180318"

分发 R 代码

分发机制:

系统会将本地依赖文件压缩打包上传到 HDFS 路径上,通过 Spark 动态分发到执行任务的机器上解压缩。 执行任务的机器本地独立的线程、内存中执行代码,最后汇总计算结果到主要节点机器上实现 R 代码的分发。

func <- function(x){x + runif(1) } # 原生 R代码
sparklyr::spark_apply(x = df,packages=T,name = c("key","value"),func =func,group = "key")

流式计算

什么是流式计算? 流式计算是介于实时与离线计算之间的一种计算方式,以亚秒级准实时的方式小批量计算数据,广泛应用在互联网广告、推荐等场景。

Sparklyr: 暂时不支持流式计算,功能开发中。

统计之都原文:
https://cosx.org/2018/05/sparkr-vs-sparklyr

学习资源

https://spark.rstudio.com/
https://github.com/rstudio/cheatsheets/raw/master/translations/chinese/sparklyr-cheatsheet_zh_CN.pdf


推荐阅读
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • ESXi命令行获取帮助的方法为,常用的命令一般都是以esxcli开头,如果忘记命令可以使用帮助:esxcli-- ... [详细]
  • 对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例为了方便查看源代码,关联导入源代 ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
author-avatar
由来只有新人笑_谁能记得旧人哭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有