Spark 2.0 介绍 : 从 RDD API 迁移到 DataSet API Spark 大数据博客 -

Relaterede dokumenter
IBM Software Group IBM 自动化测试框架. 李剑波 IBM Rational 技术顾问

Ms. Celia Jones TZ Motors 47 Herbert Street Floreat Perth WA 6018 澳大利亚地址格式 : 收信人公司名街道号码 + 街道名省名城市名 + 邮编 Miss L. Marshall Aquatechnics Ltd. 745 King St

利用 在 面蓝宝石上生长的 何 涛 陈 耀 李 辉 戴隆贵 王小丽 徐培强 王文新 陈 弘 中国科学院物理研究所凝聚态国家重点实验室 北京 :

文件 - 个人信息 Hvad hedder du? 询问某人的名字 Hvad hedder du? Hvor og hvornår er du født? Hvor og hvornår er 询问某人的出生日期和地点 du født Hvor bor du? 询问某人住在哪里 Hvad er di

Computer Networks v4 cs.sjtu 第 9 章 无线网络 系统互联 无线局域网 无线广域网. ftp://ftp.cs.sjtu.edu.cn/net330 第 9 章无线网络 1 / 196

Immigration Dokumenter. Dansk

IBM Rational Quality Manager

Referat fra DKFN Stiftende Generalforsamling, Dansk

Tillykke med jeres forlovelse. Tillykke Har med I jeres besluttet forlove je for en dato endnu? dato endnu? 用于恭喜你很熟悉的最近刚订婚的夫妇并询问婚礼何时举行 祝福 - 生日和纪念日 Fød

Det nye Kina - samfund og bønder i de første 30 år Littrup, Leif

Ms. Celia Jones TZ Motors 47 Herbert Street Floreat Perth WA 6018 澳大利亚地址格式 : 收信人公司名街道号码 + 街道名省名城市名 + 邮编 Miss L. Marshall Aquatechnics Ltd. 745 King St

Københavns Universitet Det nye Kina - samfund og bønder i de første 30 år

Energibesparelser ved varmemåling Undersøgelser og generelle erfaringer

Energibesparelser ved varmemåling

綠 表 申 請 者 經 由 電 腦 根 據 攪 珠 結 果 隨 機 排 列 的 次 序

新闻简报: 新闻简报: 02 丹麦模式的养老院全力 丹麦模式的养老院全力进军中国. TIL PRESSEN: Plejehjem efter dansk forbillede på vej i Kina. 06 dansk

Based on the ballot result, the order randomly generated by computer for White Form Applicants is as follows

Webside score img.chkaja.com

Celia Jones Herbert 街 47 号 Floreat 省珀斯市 WA 6018 Australsk adresse format: vejnummer + Vejnavn Landsdel Bynavn + postnummer Alex Marshall 国王大街 745 号西区,

Bluetooth HID Module. [ HID Keyboard ] 使用手冊 HL-MD08R-C2-HK. Bluetooth V2.1+EDR Ver

MicroPod BLUETOOTH BRUGERVEJLEDNING - DANSK

Bemærkninger om lovgivning, sikkerhed og miljø BRUGERVEJLEDNING

A Åbne spørgsmål som besvares med ja/nej som svar 1/3

Magnetic Lock Art. No. SC 807 RUS. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя SAFE.

AC3259. EN User manual 1 ZH-T 使用手冊 19 G H I J K L M Koninklijke Philips N.V. All rights reserved.

AC3259. EN User manual 1 ZH-T 使用手冊 19 H I J K L M N Koninklijke Philips N.V. All rights reserved.

丹麦乳品 ( 婴幼儿配方乳品除外 ) 生产企业在华注册名单

Systemwalker テンプレート [ イベント監視 ] 対応製品一覧 [ 最新版数 :3.7] [ 公開日 :2019/3/22]

Adhesive SAFE. SureCatch. Lower Drawer Lock Art. No. SC 801

MING-CHANG LEE. Department of Information Management Yu Da College of Business. December 6, 2006

Bemærkninger om lovgivning, sikkerhed og miljø BRUGERVEJLEDNING

Languages Final Examination. ML63 Mandarin Level 3 Sample Paper

Fortigate L2TP/IPSEC and Windows8 with PSK

Anti-Skid. Tape Art. No. 811 RUS. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя SAFE.

Ordstilling. Isabelle Verhaeghen 李珺 1

1 2 AC2889. AC2889: connected version. EN User manual 1 ZH-T 使用手冊 19 A B E F G H Koninklijke Philips N.V. All rights reserved.

リリース ノート. intra-mart EX 申請システム Version.5.4 PDF オプションは以下の製品上で動作します 動作環境については 以下の製品のリリース ノートを参照してください

Control Architecture for Intentional Island Operation in Distribution Network with High Penetration of Distributed Generation

SAFE. Home Safety Education Kit Art. No. SC 808. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя RUS

avisen Philippe Starck Popstjernen blandt designere Mød det franske designikon side 2 06/2019 Priserne er gældende til 30.

Adhesive SAFE. Door Lock Art. No. SC 810. Double Cabinet. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя

Protector w/ storage place Art. No. SC 809

avisen ,- Geberit AquaClean Sela en unik oplevelse af velvære Side 2 Juli/august 2019 Priserne er gældende til 31.

Socket. Cover EU Art. No. SC 804 SAFE. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя RUS.

ComparativeosteologybetweenDiomedea,PhoebastriaandThalasarche (albatrosesformerlysetledin Diomedea )

DC/DC Converter Application Information

Adhesive SAFE. SureCatch. Top Drawer Lock Art. No. SC 802. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя

2 /3 (M1 M2 M3) ( RS-485);PLC program

ISO/IEC/EN 機能安全規格認証のためのモデルベースデザイン

Furniture. Kit Art. No. 815 SAFE. Anti-tip-over. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя RUS

Betjeningsvejledning MKH 416 P48 U3

SAFE. SafeGate. Baseboard. Protection Kit Art. No. SC 907. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя

National Institute of Technology, Ibaraki College

MAIN BOARD GND. 2.54x x6 12V KTXD KRXD GND. 2.0x8 GND 12V PCON BCON PLED PON PLED. 2.0x6 GND /BK SCL SDA GND DCLK

SAFE. Door Stopper. w/ storage place Art. No. SC 806. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя RUS

Undervisningsmateriale udviklet for Cinemateket, Dansk Film Institut Niveau: Kinesisk B og op

Fujitsu Server PRIMEQUEST シリーズ irmc S5 RESTful API

No. ࡀ ࠕ ᴺ ዪ ࡀ ࠕ ⴕ Ͽ㨀ൻ ᩏ ႎ๔ᦠ 㧔ⷐ 㧕 ᐔᚑ 19 ᐕ 3 㧔2007 ᐕ㧕 ⴕ ᴺ 㓙දജᯏ 㧔JICA㧕 ᆔ వ ᑼળ JR ን ㅢ ᑼળ

Lock SAFE. Fridge and Appliance. User Manual Brugervejledning Användarmanual Brukerveiledning 使用说明书 Руководство пользователя. Art. No.

Forretning Brev Brev - Adresse Dansk Mr. J. Rhodes Rhodes & Rhodes Corp. 212 Silverback Drive California Springs CA Amerikansk adresse format: M

Australsk addresse format: Vejnummer + vejnavn Provins Bynavn + postnummer Miss L. Marshall Aquatechnics Ltd. 745 King Street West End Wellington 0680

AARHUS BY AARHUS 是一本關於奧胡斯 (Aarhus) 的攝影書 一本為奧胡斯所做, 關於並獻給此 地之美麗又富含愛意的城市群像 共有 167 位攝影師為這本巨作貢獻了作品 請盡情閱覽! A non-profit publication

Akiyo Nakamoto Nanae Ikeda Sachie Arai. Ryota Kitao Hiromi Morioka Masako Yamanaka Junko Yamanaka

FUJITSU Software ServerView Suite V U

2009/10/19. Overview of JJY

Dalian Xing Lun Bearings Latest Stock List

Qualified Vendors List (QVL)

HealthInsuranceandtheHealthSafetyNet:

VERSYS FIBER METAL MIDCOAT 6 DEGREE REDUCED TAPER NECK 手術手技

Vorwahluhr 1533 Digital timer 1533 Horloge de programmation 1533 Timer programmabile 1533 Programador 1533 Schakelklok 1533 Timer 1533 Tidur 1533

The NUS Statistical Machine Translation System for IWSLT 2009

203V5. DK Brugervejledning 1 Kundeservice og garanti 26 Fejlfinding og FAQ 31

USB-dockingstation SB4B DA Brugervejledning 1 Kundeservice og garanti 22 Fejlfinding og FAQ 25

Ꮏ ᝄ ዪ ᣇਛዊડ ᝄ ᐲߩ ᩏ ᦨ ႎ๔ᦠ ᐔᚑ 23 ᐕ 8 㧔2011 ᐕ ⴕ ᴺ 㓙දജᯏ 㧔JICA㧕 ᑼળ

Studieretningsprojekt

Qualified Vendors List (QVL)

啊 飛飞 開玩笑 开玩笑 認為 认为 鞋

啊 飛飞 開玩笑 开玩笑 認為 认为 鞋

StorageTek Virtual Library Extension

Qualified Vendors List (QVL)

Brugervejledning Version 1.3

ESMPRO/ServerManager Ver.6 ユーザーズガイドコマンドラインインターフェース

Udvekslingsstudent i Taipei Tredje gang er lykkensgang

223V5. DK Brugervejledning 1 Kundeservice og garanti 20 Fejlfinding og FAQ 25

220S4L. DA Brugervejledning 1 Kundeservice og garanti 24 Fejlfinding og FAQ 30

221S6. DA Brugervejledning 1 Kundeservice og garanti 24 Fejlfinding og FAQ 29

C と Ruby との大きな違い. 再掲 : if-then-else 再掲 : 最初. コンパイラ理論 13 Racc その 8 ( コード出力 ) コード生成をしてみよう. といっても 時間がないので Ruby-likeなプログラムを出力してみよう 櫻井彰人

216V6. DK Brugervejledning 1 Kundeservice og garanti 20 Fejlfinding og FAQ 26

200V4. DK Brugervejledning 1 Kundeservice og garanti 23 Fejlfinding og FAQ 28

275P4. DA Brugervejledning 1 Kundeservice og garanti 23 Fejlfinding og FAQ 29

Beoplay H9 3rd Gen. Quick Start Guide Lynguide Kurzanleitung Guía de inicio rápido Guide de démarrage rapide Guida di avvio rapido クイックスタートガイド빠른시작가이드

The Semiconductor Lifecycle Solution Renesas Solutions. ルネサス認定の製造中止品正規代理店

288P6. DA Brugervejledning 1 Kundeservice og garanti 28 Fejlfinding og FAQ 34

Højtydende 2 x 12 passiv subwoofer BETJENINGSVEJLEDNING


Moda 275C5. DA Brugervejledning 1 Kundeservice og garanti 24 Fejlfinding og FAQ 29

VIBORG HK MOD RK PODRAVKA VEGETA LØRDAG 11. NOVEMBER KL Side 1

223V5. DK Brugervejledning 1 Kundeservice og garanti 27 Fejlfinding og FAQ 32

デンマークの住宅タイプと社会住宅の経営管理の特徴に関する研究

Transkript:

Spark 2.0 技术预览 : 更容易 更快速 更智能 文章中简单地介绍了 Spark 2.0 带来的新技术等 Spark 2.0 是 Apache Spark 的下一个主要版本 此版本在架构抽象 API 以及平台的类库方面带来了很大的变化, 为该框架明年的发展方向奠定了方向, 所以了解 Spark 2.0 的一些特性对我们能够使用它有着非常重要的作用 本博客将对 Spark 2.0 进行一序列的介绍 ( 参见 Spark 2.0 分类 ), 欢迎关注 迁移到 DataSet DataSet API 将 和 DataFrame 两者的优点整合起来,DataSet 中的许多 API 模仿了 的 AP I, 虽然两者的实现很不一样 所以大多数调用 API 编写的程序可以很容易地迁移到 DataSet API 中, 下面我将简单地展示几个片段来说明如何将 编写的程序迁移到 DataSet 1 加载文件 val rdd = sparkcontext.textfile("src/main/resources/data.txt") val ds = sparksession.read.text("src/main/resources/data.txt") 2 计算总数 rdd.count() ds.count() 1 / 7

3 WordCount 实例 val words = rdd.flatmap(value => value.split("\\s+")) val wordspair = words.map(word => (word,1)) val wordcount = wordspair.reducebykey(_+_) import sparksession.implicits._ val wordsds = ds.flatmap(value => value.split("\\s+")) val wordspairds = wordsds.groupbykey(value => value) val wordcountds = wordspairds.count() 4 缓存 (Caching) rdd.cache() ds.cache() 5 过滤 (Filter) val filtered = words.filter(value => value =="hello") 2 / 7

val filteredds = wordsds.filter(value => value =="hello") 6 Map Partitions val mappartitions = rdd.mappartitions(iterator => val mappartitionsds = ds.mappartitions(iterator => 7 reducebykey val reducecountby = wordspair.reducebykey(_+_) val reducecountbyds = wordspairds.mapgroups((key,values) =>(key,values.length)) 8 和 DataSet 互相转换 val dsto = ds.rdd 3 / 7

将 转换成 DataFrame 需要做一些工作, 比如需要指定特定的模式 下面展示如何将 [Strin g] 转换成 DataFrame[String]: val rddstringtorow = rdd.map(value => Row(value)) val dfschema = StructType(Array(StructField("value",StringType))) val rddtodf = sparksession.createdataframe(rddstringtorow,dfschema) val rddtodataset = rddtodf.as[string] 9 基于 Double 的操作 val double = sparkcontext.make(list(1.0,5.0,8.9,9.0)) val rddsum =double.sum() val rddmean = double.mean() val row = double.map(value => Row.fromSeq(List(value))) val schema = StructType(Array(StructField("value",DoubleType))) val doubleds = sparksession.createdataframe(row,schema) import org.apache.spark.sql.functions._ doubleds.agg(sum("value")) doubleds.agg(mean("value")) 10 Reduce API val rddreduce = double.reduce((a,b) => a +b) 4 / 7

val dsreduce = doubleds.reduce((row1,row2) =>Row(row1.getDouble(0) + row2.getdouble(0))) 上面的代码片段展示了如何将你之前使用 API 编写的程序转换成 DataSet API 编写的程序 虽然这里并没有覆盖所有的 API, 但是通过上面的介绍, 你肯定可以将其他 API 编写的程序转换成 DataSet API 编写的程序 完整代码 package com.iteblog.spark import org.apache.spark.sql.types.{doubletype, StringType, StructField, StructType} import org.apache.spark.sql.{row, SparkSession} /** * API to API * https://www.iteblog.com */ object ToDataSet { def main(args: Array[String]) { val sparksession = SparkSession.builder. master("local").appname("example").getorcreate() val sparkcontext = sparksession.sparkcontext //read data from text file val rdd = sparkcontext.textfile("src/main/resources/data.txt") val ds = sparksession.read.text("src/main/resources/data.txt") // do count println("count ") println(rdd.count()) println(ds.count()) 5 / 7

// wordcount println(" wordcount ") val words = rdd.flatmap(value => value.split("\\s+")) val wordspair = words.map(word => (word,1)) val wordcount = wordspair.reducebykey(_+_) println(wordcount.collect.tolist) import sparksession.implicits._ val wordsds = ds.flatmap(value => value.split("\\s+")) val wordspairds = wordsds.groupbykey(value => value) val wordcountds = wordspairds.count wordcountds.show() //cache rdd.cache() ds.cache() //filter val filtered = words.filter(value => value =="hello") println(filtered.collect().tolist) val filteredds = wordsds.filter(value => value =="hello") filteredds.show() //map partitions val mappartitions = rdd.mappartitions(iterator => println(s" the count each partition is ${mappartitions.collect().tolist}") val mappartitionsds = ds.mappartitions(iterator => mappartitionsds.show() //converting to each other val dsto = ds.rdd println(dsto.collect()) val rddstringtorow = rdd.map(value => Row(value)) val dfschema = StructType(Array(StructField("value",StringType))) val rddtodf = sparksession.createdataframe(rddstringtorow,dfschema) val rddtodataset = rddtodf.as[string] rddtodataset.show() 6 / 7

Powered by TCPDF (www.tcpdf.org) // double based operation val double = sparkcontext.make(list(1.0,5.0,8.9,9.0)) val rddsum =double.sum() val rddmean = double.mean() println(s"sum is $rddsum") println(s"mean is $rddmean") val row = double.map(value => Row.fromSeq(List(value))) val schema = StructType(Array(StructField("value",DoubleType))) val doubleds = sparksession.createdataframe(row,schema) import org.apache.spark.sql.functions._ doubleds.agg(sum("value")).show() doubleds.agg(mean("value")).show() //reducebykey API val reducecountby = wordspair.reducebykey(_+_) val reducecountbyds = wordspairds.mapgroups((key,values) =>(key,values.length)) println(reducecountby.collect().tolist) println(reducecountbyds.collect().tolist) //reduce function val rddreduce = double.reduce((a,b) => a +b) val dsreduce = doubleds.reduce((row1,row2) => Row(row1.getDouble(0) + row2.getdouble(0))) println("rdd reduce is " +rddreduce +" dataset reduce "+dsreduce) } } 本博客文章除特别声明, 全部都是原创! 转载本文请加上 : 转载自过往记忆 (https://www.iteblog.com/) 本文链接 : () 7 / 7