SparkR(R on Spark)编程指南

Similar documents
Apache CarbonData集群模式使用指南

Spark读取Hbase中的数据

使用Spark SQL读取Hive上的数据

通过Hive将数据写入到ElasticSearch

如何在 Apache Hive 中解析 Json 数组

使用Cassandra和Spark 2.0实现Rest API服务

Flume-ng与Mysql整合开发

Hive:用Java代码通过JDBC连接Hiveserver

使用Hive读取ElasticSearch中的数据

使用Apache Beam读写HDFS上的文件

Hadoop&Spark解决二次排序问题(Hadoop篇)

Kafka客户端是如何找到 leader 分区的

Guava学习之Resources

六种使用Linux命令发送带附件的邮件

使用MapReduce读取XML文件

PowerPoint 演示文稿

在Spring中使用Kafka:Producer篇

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

Guava学习之CharSequenceReader

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

Spark1.4中DataFrame功能加强,新增科学和数学函数

Spark 2.0介绍:在Spark SQL中定义查询优化规则

将 MySQL 的全量数据导入到 Apache Solr 中

韶关:神奇丹霞

ABOUT ME AGENDA 唐建法 / TJ MongoDB 高级方案架构师 MongoDB 中文社区联合发起人 Spark 介绍 Spark 和 MongoDB 案例演示

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭

哼, 你 們 不 回 答 又 怎 麼 樣? 不 管 是 多 大 來 頭, 現 在 都 被 血 魔 吞 噬 無 蹤 了 你 們 幾 個 真 是 太 過 分, 我 不 犯 你 們, 你 們 卻 一 天 到 晚 來 挑 釁 我 教 尊 冷 笑 著 說 道 嗚, 大 人 土 地 大 姐 跪 下 來, 流 下

Flink快速上手(QuickStart)

Apache Spark 2.4 新增内置函数和高阶函数使用介绍

伊春:醉人林都

Flink on YARN部署快速入门指南

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

epub 61-2

Hive几种数据导入方式

IBM Rational ClearQuest Client for Eclipse 1/ IBM Rational ClearQuest Client for Ecl

三种方法实现Hadoop(MapReduce)全局排序(1)

关林:武圣陵寝

泰山:五岳独尊

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

PowerPoint 演示文稿

21 个你应该知道的 wget 命令

Hadoop元数据合并异常及解决方法

国内26省市新能源汽车推广规划已出台

北戴河:海阔天空

目錄


解决百度统计无法获取https来源的referrer

中国教育管理全集(一百五十四)

西岭雪山滑雪场

Reducing Client Incidents through Big Data Predictive Analytics

epub83-1

Microsoft Word \.U.e.~.g...X...doc

Ubuntu和CentOS如何配置SSH使得无密码登陆

Ps22Pdf

Hadoop 2.2.0安装和配置lzo

业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

Microsoft PowerPoint - Lecture7II.ppt

Spark作业代码(源码)IDE远程调试

096STUT DOC

Flink快速上手之Scala API使用

Microsoft PowerPoint - STU_EC_Ch08.ppt

ThreeDtunnel.doc

NethersoleJO89(8).indd

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

A9RF716.tmp

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5]

Microsoft Word 電腦軟體設計.doc

Microsoft PowerPoint - STU_EC_Ch02.ppt

IP505SM_manual_cn.doc

江门:中国第一侨乡

使用Apache Spark将数据写入ElasticSearch

嘉義市政府暨附(所)屬機關電話禮貌測試實施要點

是 喔, 就 是 那 個 在 BBS 醫 療 版 跟 你 嗆 聲, 自 稱 有 三 十 多 年 推 拿 經 驗 的 大 叔 嗎? 一 個 看 來 頗 為 清 秀 的 女 生 問 道, 她 語 氣 中 略 感 訝 異 是 啊, 什 麼 推 拿 按 摩 有 多 好, 還 要 人 生 病 盡 量 不 要

培 训 机 构 介 绍 中 科 普 开 是 国 内 首 家 致 力 于 IT 新 技 术 领 域 的 领 航 者, 专 注 于 云 计 算 大 数 据 物 联 网 移 动 互 联 网 技 术 的 培 训, 也 是 国 内 第 一 家 开 展 Hadoop 云 计 算 的 培

Oracle Database 10g: SQL (OCE) 的第一堂課

教育扩张能改善收入分配差距吗?——来自CHNS2006年数据的证据

山水文化,市井人家——以湖州邱城小镇的概念性规划为例

AL-M200 Series

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

Microsoft Word - SupplyIT manual 3_cn_david.doc

高中英文科教師甄試心得

Microsoft Word - 口試本封面.doc

Microsoft Word - template.doc

地 理 志 鏡 止 煞, 來 達 到 安 宅 的 效 果 4. 門 神 符 紙 : 於 門 板 繪 製 門 神, 作 為 宅 第 的 守 護, 民 宅 所 使 用 的 門 神 題 材, 多 為 天 官 賜 福 或 文 武 官 員 符 紙 是 以 畫 了 符 咒 的 紙 懸 掛 室 內, 或 加 框

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

在Fedora上部署Hadoop2.2.0伪分布式平台

Microsoft Word - 08_科普作品選讀示例一_ doc

PowerPoint Presentation

Windows XP

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

untitled

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

C/C++语言 - 运算符、表达式和语句

科学计算的语言-FORTRAN95

<4D F736F F F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E BBCE6C8DDC4A3CABD5D>

Untitled-2.indd

SVM OA 1 SVM MLP Tab 1 1 Drug feature data quantization table

Transcription:

概论 SparkR 是一个 R 语言包, 它提供了轻量级的方式使得可以在 R 语言中使用 Apache Spark 在 Spark 1.4 中,SparkR 实现了分布式的 data frame, 支持类似查询 过滤以及聚合的操作 ( 类似于 R 中的 data frames:dplyr), 但是这个可以操作大规模的数据集 SparkR DataFrames DataFrame 是数据组织成一个带有列名称的分布式数据集 在概念上和关系型数据库中的表类似, 或者和 R 语言中的 data frame 类似, 但是这个提供了很多的优化措施 构造 DataFrame 的方式有很多 : 可以通过结构化文件中构造 ; 可以通过 Hive 中的表构造 ; 可以通过外部数据库构造或者是通过现有 R 的 data frame 构造等等 从 SparkContext 和 SQLContext 开始 SparkContext 是 SparkR 的切入点, 它使得你的 R 程序和 Spark 集群互通 你可以通过 sparkr.i nit 来构建 SparkContext, 然后可以传入类似于应用程序名称的选项给它 如果想使用 DataFrame s, 我们得创建 SQLContext, 这个可以通过 SparkContext 来构造 如果你使用 SparkR shell, SQLContext 和 SparkContext 会自动地构建好 sc <- sparkr.init() sqlcontext <- sparkrsql.init(sc) 1 / 6

如果想及时了解 Spark Hadoop 或者 Hbase 相关的文章, 欢迎关注微信公共帐号 :iteblog_hadoop 创建 DataFrames 如果有 SQLContext 实例, 那么应用程序就可以通过本地的 R data frame( 或者是 Hive 表 ; 或者是其他数据源 ) 来创建 DataFrames 下面将详细地介绍 通过本地 data frame 构造 最简单地创建 DataFrames 是将 R 的 data frame 转换成 SparkR DataFrames, 我们可以通过 createdataframe 来创建, 并传入本地 R 的 data frame 以此来创建 SparkR DataFrames, 下面例子就是这种方法 : df <- createdataframe(sqlcontext, faithful) # Displays the content of the DataFrame to stdout head(df) ## eruptions waiting ##1 3.600 79 ##2 1.800 54 ##3 3.333 74 通过 Data Sources 构造 通过 DataFrame 接口,SparkR 支持操作多种数据源, 本节将介绍如何通过 Data Sources 提供的方法来加载和保存数据 你可以阅读 Spark 2 / 6

SQL 编程指南来了解更多的 options 选项. Data Sources 中创建 DataFrames 的一般方法是使用 read.df, 这个方法需要传入 SQLContext, 需要加载的文件路径以及数据源的类型 SparkR 内置支持读取 JSON 和 Parquet 文件, 而且通过 S park Packages 你可以读取很多类型的数据, 比如 CSV 和 Avro 文件 下面是介绍如何 JSON 文件, 注意, 这里使用的文件不是典型的 JSON 文件 每行文件必须包含一个分隔符 自包含有效的 JSON 对象 : people <- read.df(sqlcontext, "./examples/src/main/resources/people.json", "json") head(people) ## age name ##1 NA Michael ##2 30 Andy ##3 19 Justin # SparkR automatically infers the schema from the JSON file printschema(people) # root # -- age: integer (nullable = true) # -- name: string (nullable = true) Data sources API 还可以将 DataFrames 保存成多种的文件格式, 比如我们可以通过 write.df 将上面的 DataFrame 保存成 Parquet 文件 : write.df(people, path="people.parquet", source="parquet", mode="overwrite") 通过 Hive tables 构造 我们也可以通过 Hive 表来创建 SparkR DataFrames, 为了达到这个目的, 我们需要创建 HiveContext, 因为我们可以通过它来访问 Hive MetaStore 中的表 注意,Spark 内置就对 Hive 提供了支持,SQLContext 和 HiveContext 的区别可以参见 SQL 编程指南 # sc is an existing SparkContext. hivecontext <- sparkrhive.init(sc) sql(hivecontext, "CREATE TABLE IF NOT EXISTS src (key INT, value STRING)") sql(hivecontext, "LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TAB LE src") 3 / 6

# Queries can be expressed in HiveQL. results <- hivecontext.sql("from src SELECT key, value") # results is now a DataFrame head(results) ## key value ## 1 238 val_238 ## 2 86 val_86 ## 3 311 val_311 DataFrame 的相关操作 SparkR DataFrames 中提供了大量操作结构化数据的函数, 这里仅仅列出其中一小部分, 详细的 API 可以参见 SparkR 编程的 API 文档 选择行和列 # Create the DataFrame df <- createdataframe(sqlcontext, faithful) # Get basic information about the DataFrame df ## DataFrame[eruptions:double, waiting:double] # Select only the "eruptions" column head(select(df, df$eruptions)) ## eruptions ##1 3.600 ##2 1.800 ##3 3.333 # You can also pass in column name as strings head(select(df, "eruptions")) # Filter the DataFrame to only retain rows with wait times shorter than 50 mins head(filter(df, df$waiting < 50)) ## eruptions waiting ##1 1.750 47 ##2 1.750 47 ##3 1.867 48 4 / 6

Grouping 和 Aggregation # We use the `n` operator to count the number of times each waiting time appears head(summarize(groupby(df, df$waiting), count = n(df$waiting))) ## waiting count ##1 81 13 ##2 60 6 ##3 68 1 # We can also sort the output from the aggregation to get the most common waiting times waiting_counts <- summarize(groupby(df, df$waiting), count = n(df$waiting)) head(arrange(waiting_counts, desc(waiting_counts$count))) ## waiting count ##1 78 15 ##2 83 14 ##3 81 13 列上面的操作 SparkR 提供了大量的函数用于直接对列进行数据处理的操作 # Convert waiting time from hours to seconds. # Note that we can assign this to a new column in the same DataFrame df$waiting_secs <- df$waiting * 60 head(df) ## eruptions waiting waiting_secs ##1 3.600 79 4740 ##2 1.800 54 3240 ##3 3.333 74 4440 在 SparkR 中运行 SQL 查询 SparkR DataFrame 也可以在 Spark SQL 中注册成临时表 将 DataFrame 注册成表可以允许我们在数据集上运行 SQL 查询 sql 函数可以使得我们直接运行 SQL 查询, 而且返回的结构是 DataFra me # Load a JSON file 5 / 6

Powered by TCPDF (www.tcpdf.org) people <- read.df(sqlcontext, "./examples/src/main/resources/people.json", "json") # Register this DataFrame as a table. registertemptable(people, "people") # SQL statements can be run by using the sql method teenagers <- sql(sqlcontext, "SELECT name FROM people WHERE age >= 13 AND age <= 19") head(teenagers) ## name ##1 Justin 本文翻译自 SparkR 官方文档, 这个是 Spark 1.4 中才有的, 不过他还没发布, 不过可以看这里 http://people.apache.org/~pwendell/spark-releases/spark-1.4.0-rc4-docs/sparkr.html 本博客文章除特别声明, 全部都是原创! 转载本文请加上 : 转载自过往记忆 (https://www.iteblog.com/) 本文链接 : () 6 / 6