logo资料库

spark官方文档中文版.pdf

第1页 / 共106页
第2页 / 共106页
第3页 / 共106页
第4页 / 共106页
第5页 / 共106页
第6页 / 共106页
第7页 / 共106页
第8页 / 共106页
资料共106页,剩余部分请下载后查看
Introduction
快速上手
Spark Shell
独立应用程序
开始翻滚吧!
编程指南
引入 Spark
初始化 Spark
Spark RDDs
并行集合
外部数据集
RDD 操伩ਾ㸊敮摯扪ਊ㈸ㄠ〠潢樊㰼ਯ䑥獴⁛㠲‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴′㜷‰⁒ਯ偲敶′㠰‰⁒ਯ呩瑬攠⣾＀刀䐀䑣Ŏ䕓ᘩਾ㸊敮摯扪ਊ㈸㈠〠潢樊㰼ਯ䑥獴⁛㠶‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㠳‰⁒ਯ偡牥湴′㜴‰⁒ਯ偲敶′㜷‰⁒ਯ呩瑬攠⣾q煎ꭓ�켩ਾ㸊敮摯扪ਊ㈸㌠〠潢樊㰼ਯ䑥獴⁛㤰‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴′㜴‰⁒ਯ偲敶′㠲‰⁒ਯ呩瑬攠⣾n캏�챟Y쬩ਾ㸊敮摯扪ਊ㈸㐠〠潢樊㰼ਯ䍯畮琠ⴴਯ䑥獴⁛㤶‰⁒ 塙娠㘲‸㐲畬汝ਯ䙩牳琠㈸㔠〠刊⽌慳琠㌰ㄠ〠刊⽎數琠㌰㈠〠刊⽐慲敮琠㈶㠠〠刊⽐牥瘠㈷㐠〠刊⽔楴汥
Spark Streaming⤊㸾੥湤潢樊ਲ㠵‰扪਼㰊⽄敳琠嬱〰‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㠶‰⁒ਯ偡牥湴′㠴‰⁒ਯ呩瑬攠⣾nN⩟ὶ葏譛倩ਾ㸊敮摯扪ਊ㈸㘠〠潢樊㰼ਯ䍯畮琠ⴱ《⽄敳琠嬱〴‰⁒ 塙娠㘲‸㐲畬汝ਯ䙩牳琠㈸㜠〠刊⽌慳琠㈹㘠〠刊⽎數琠㈹㜠〠刊⽐慲敮琠㈸㐠〠刊⽐牥瘠㈸㔠〠刊⽔楴汥
基本概念⤊㸾੥湤潢樊ਲ㠷‰扪਼㰊⽄敳琠嬱〶‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㠸‰⁒ਯ偡牥湴′㠶‰⁒ਯ呩瑬攠⣾q玀吩ਾ㸊敮摯扪ਊ㈸㠠〠潢樊㰼ਯ䑥獴⁛㄰㠠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈸㤠〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈸㜠〠刊⽔楴汥
初始化StreamingContext⤊㸾੥湤潢樊ਲ㠹‰扪਼㰊⽄敳琠嬱ㄴ‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㤰‰⁒ਯ偡牥湴′㠶‰⁒ਯ偲敶′㠸‰⁒ਯ呩瑬攠⣾ケ뭥捭䄩ਾ㸊敮摯扪ਊ㈹〠〠潢樊㰼ਯ䑥獴⁛ㄱ㘠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹ㄠ〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈸㤠〠刊⽔楴汥
输入DStreams⤊㸾੥湤潢樊ਲ㤱‰扪਼㰊⽄敳琠嬱㈰‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㤲‰⁒ਯ偡牥湴′㠶‰⁒ਯ偲敶′㤰‰⁒ਯ呩瑬攠⣾＀䐀匀琀爀攀愀济⵶蒏汣戩ਾ㸊敮摯扪ਊ㈹㈠〠潢樊㰼ਯ䑥獴⁛ㄲ㠠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㌠〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈹ㄠ〠刊⽔楴汥
DStream的输出操伩ਾ㸊敮摯扪ਊ㈹㌠〠潢樊㰼ਯ䑥獴⁛ㄳ㈠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㐠〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈹㈠〠刊⽔楴汥
缓存或持久化⤊㸾੥湤潢樊ਲ㤴‰扪਼㰊⽄敳琠嬱㌴‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㤵‰⁒ਯ偡牥湴′㠶‰⁒ਯ偲敶′㤳‰⁒ਯ呩瑬攠⣾＀䌀栀攀挀欀瀀漀椀渀琀椀渀朩ਾ㸊敮摯扪ਊ㈹㔠〠潢樊㰼ਯ䑥獴⁛ㄳ㠠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㘠〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈹㐠〠刊⽔楴汥
部署应用程序⤊㸾੥湤潢樊ਲ㤶‰扪਼㰊⽄敳琠嬱㐰‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴′㠶‰⁒ਯ偲敶′㤵‰⁒ਯ呩瑬攠⣾カ텣Ꝟ鑵⡺୞輩ਾ㸊敮摯扪ਊ㈹㜠〠潢樊㰼ਯ䍯畮琠ⴳਯ䑥獴⁛ㄴ㈠〠删⽘奚‶㈠㠴㈠湵汬崊⽆楲獴′㤸‰⁒ਯ䱡獴″〰‰⁒ਯ乥硴″〱‰⁒ਯ偡牥湴′㠴‰⁒ਯ偲敶′㠶‰⁒ਯ呩瑬攠⣾⦆➀ﶌ͏ᠩਾ㸊敮摯扪ਊ㈹㠠〠潢樊㰼ਯ䑥獴⁛ㄴ㐠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㤠〠刊⽐慲敮琠㈹㜠〠刊⽔楴汥
减ᅢ祥灣湶葢枈䱥ਾ㸊敮摯扪ਊ㈹㤠〠潢樊㰼ਯ䑥獴⁛ㄴ㠠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌰〠〠刊⽐慲敮琠㈹㜠〠刊⽐牥瘠㈹㠠〠刊⽔楴汥
设置正确的批容量⤊㸾੥湤潢樊ਲ਼〰‰扪਼㰊⽄敳琠嬱㔰‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴′㤷‰⁒ਯ偲敶′㤹‰⁒ਯ呩瑬攠⣾q蕛墌͏ᠩਾ㸊敮摯扪ਊ㌰ㄠ〠潢樊㰼ਯ䑥獴⁛ㄵ㈠〠删⽘奚‶㈠㠴㈠湵汬崊⽐慲敮琠㈸㐠〠刊⽐牥瘠㈹㜠〠刊⽔楴汥
容错语义⤊㸾੥湤潢樊ਲ਼〲‰扪਼㰊⽃潵湴‭㘊⽄敳琠嬱㔶‰⁒ 塙娠㘲‸㐲畬汝ਯ䙩牳琠㌰㌠〠刊⽌慳琠㌱㈠〠刊⽎數琠㌱㌠〠刊⽐慲敮琠㈶㠠〠刊⽐牥瘠㈸㐠〠刊⽔楴汥
Spark SQL⤊㸾੥湤潢樊ਲ਼〳‰扪਼㰊⽄敳琠嬱㔸‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″〴‰⁒ਯ偡牥湴″〲‰⁒ਯ呩瑬攠⣾⦅Y쬩ਾ㸊敮摯扪ਊ㌰㐠〠潢樊㰼ਯ䍯畮琠ⴴਯ䑥獴⁛ㄶ〠〠删⽘奚‶㈠㠴㈠湵汬崊⽆楲獴″〵‰⁒ਯ䱡獴″〸‰⁒ਯ乥硴″〹‰⁒ਯ偡牥湴″〲‰⁒ਯ偲敶″〳‰⁒ਯ呩瑬攠⣾・灣湮逩ਾ㸊敮摯扪ਊ㌰㔠〠潢樊㰼ਯ䑥獴⁛ㄶ㌠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌰㘠〠刊⽐慲敮琠㌰㐠〠刊⽔楴汥
RDDs⤊㸾੥湤潢樊ਲ਼〶‰扪਼㰊⽄敳琠嬱㘷‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″〷‰⁒ਯ偡牥湴″〴‰⁒ਯ偲敶″〵‰⁒ਯ呩瑬攠⣾＀瀀愀爀焀甀攀瑥蝎ਾ㸊敮摯扪ਊ㌰㜠〠潢樊㰼ਯ䑥獴⁛ㄶ㤠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌰㠠〠刊⽐慲敮琠㌰㐠〠刊⽐牥瘠㌰㘠〠刊⽔楴汥
JSON数据集⤊㸾੥湤潢樊ਲ਼〸‰扪਼㰊⽄敳琠嬱㜱‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴″〴‰⁒ਯ偲敶″〷‰⁒ਯ呩瑬攠⣾＀䠀椀瘀斈栩ਾ㸊敮摯扪ਊ㌰㤠〠潢樊㰼ਯ䑥獴⁛ㄷ㌠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱〠〠刊⽐慲敮琠㌰㈠〠刊⽐牥瘠㌰㐠〠刊⽔楴汥
性能调优⤊㸾੥湤潢樊ਲ਼㄰‰扪਼㰊⽄敳琠嬱㜵‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″ㄱ‰⁒ਯ偡牥湴″〲‰⁒ਯ偲敶″〹‰⁒ਯ呩瑬攠⣾q癛茀匀儀䱣ꕓਾ㸊敮摯扪ਊ㌱ㄠ〠潢樊㰼ਯ䑥獴⁛ㄷ㤠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㈠〠刊⽐慲敮琠㌰㈠〠刊⽐牥瘠㌱〠〠刊⽔楴汥
编写语言集成(Language-Integrated)的相关查询⤊㸾੥湤潢樊ਲ਼ㄲ‰扪਼㰊⽄敳琠嬱㠱‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴″〲‰⁒ਯ偲敶″ㄱ‰⁒ਯ呩瑬攠⣾＀匀瀀愀爀欀 匀儀䱥灣湼筗謩ਾ㸊敮摯扪ਊ㌱㌠〠潢樊㰼ਯ䍯畮琠ⴱ㈊⽄敳琠嬱㠶‰⁒ 塙娠㘲‸㐲畬汝ਯ䙩牳琠㌱㐠〠刊⽌慳琠㌲㔠〠刊⽐慲敮琠㈶㠠〠刊⽐牥瘠㌰㈠〠刊⽔楴汥
GraphX编程指南⤊㸾੥湤潢樊ਲ਼ㄴ‰扪਼㰊⽄敳琠嬱㤴‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″ㄵ‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ呩瑬攠⣾⦅Y쬩ਾ㸊敮摯扪ਊ㌱㔠〠潢樊㰼ਯ䑥獴⁛ㄹ㘠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㘠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㐠〠刊⽔楴汥
幠❖︩ਾ㸊敮摯扪ਊ㌱㘠〠潢樊㰼ਯ䑥獴⁛㈰㔠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㜠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㔠〠刊⽔楴汥
图操佻☩ਾ㸊敮摯扪ਊ㌱㜠〠潢樊㰼ਯ䑥獴⁛㈲〠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㠠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㘠〠刊⽔楴汥
Pregel API⤊㸾੥湤潢樊ਲ਼ㄸ‰扪਼㰊⽄敳琠嬲㈴‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″ㄹ‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″ㄷ‰⁒ਯ呩瑬攠⣾v﹧蒐₀ԩਾ㸊敮摯扪ਊ㌱㤠〠潢樊㰼ਯ䑥獴⁛㈲㘠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌲〠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㠠〠刊⽔楴汥
顶点和边RDDs⤊㸾੥湤潢樊ਲ਼㈰‰扪਼㰊⽄敳琠嬲㌰‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″㈱‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″ㄹ‰⁒ਯ呩瑬攠⣾vﹻ靬픩ਾ㸊敮摯扪ਊ㌲ㄠ〠潢樊㰼ਯ䑥獴⁛㈳㔠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌲㈠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌲〠〠刊⽔楴汥
例子⤊㸾੥湤潢樊ਲ਼㈲‰扪਼㰊⽄敳琠嬲㌷‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″㈳‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″㈱‰⁒ਯ呩瑬攠⣾」큎ꑞ鑵⡺୞輩ਾ㸊敮摯扪ਊ㌲㌠〠潢樊㰼ਯ䑥獴⁛㈴ㄠ〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌲㐠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌲㈠〠刊⽔楴汥
独立运行Spark⤊㸾੥湤潢樊ਲ਼㈴‰扪਼㰊⽄敳琠嬲㔱‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″㈵‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″㈳‰⁒ਯ呩瑬攠⣾w⠀礀愀爀湎એ킈䰀匀瀀愀爀欩ਾ㸊敮摯扪ਊ㌲㔠〠潢樊㰼ਯ䑥獴⁛㈵㔠〠删⽘奚‶㈠㠴㈠湵汬崊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌲㐠〠刊⽔楴汥
Spark配置⤊㸾੥湤潢樊ਲ਼㈶‰扪਼㰠⽌敮杴栱‶㠰㘴 䙩汴敲⁛⽆污瑥䑥捯摥崠⽌敮杴栠㌰㈷㘠⽄䰠㘸〶㐠㸾ੳ瑲敡洊碜祼哅ሿ嫕�덏虌–☉䮀蒄␣魁䓂鹡䯀낉䨄吐薰䌐䇅Յ䁅呔࢈訫ꢸ†뢠ퟫ嗰諞ꮨ点䣎볪㹧숤胺篯ﷳ�酯�ꪺ몪笒ā쀊唠䇮胁㥹끩�铲⪡ﲚ魧蒮ﱻ뼳˜ી陎ꢜ磽鲱⾸¤贀옝Ꭿ鬵ꇋ띝ảيź㠧负嬑箠ꨆꃿ⒪�ሥ��ꇷ෴鸱ᤳ眽ᱺ�큲푵厯᧋뜁�ꋷ諫쟎겴⾑踁걛䣥䎕厧켸燹쉏瀞畛껨୨塋揨঒ﰘ긂Հ祐즧儆㔪紈᎘�カ䅦ﰣἅ䮬Ѧ욨해ʴ뽼灏血⡖ꭼ갎쑼捷�ຸ＀쨼�␩ﮕﵰ㮽怒雸�⍷į�჻醿鷻ꤎ蟿圿⚍흠⭬梐디袗莴巰ᘼ⶞Ẃᕿ탬䮰奿娍歠쥅쭝ଋꢝ跔ᄍ伹ꗎ與꣧鷰ӱ봹꽓⽠鯂꽱⿜൏勉믡䗺蘿槕汶૮暃㐏㊚鰌⮩簹泄鄰虒뗏᠘ནᬵ娍ꯠ熸锴룾ꏌ诽៬뗏퇈靑㯷셤뢑ⓩꡭᘻԝ삮縂뮤㐚ﬖ硞咙ឯ欬隮支ざ䝚୷셄쉘ﲜ욹䊺ﰏ룹￸掘❏ʯ벏甮跽ஒ탋쒍莑⭆躈阎ᴲ磐삒ŗ꫟镽讯뭗켞靇誺忖굫韂캝㨖듏쵩ힶ䷋ᙙ餙Ư쯩䢲嬭暓토젒䍨Ꭺ쇲�剦죕杬롷硬燛㚡�䦽�帓ᨛꨡ≧薋譅剸汍꠼咓䕤求特䶄䩎桔㊢閌풗䑧ꠛ瓣嶄䌵ݺ蕃㭱쓀剺廑⬜෕ﰤ黻譧㥋볘㶝檈凱톆竗祒痯爚⍮덚窆箎랴洃�噺듒卍쭰泙᷅ͫ�쬶ئ㯯陦�汅䷉샒�苩뙭𥳐⒅箉⳨⦚갱ㆊ♃鏹큡票宛�矬瓂룲汛䖸括꣒ᩩⳕ궖穗圯ꥱ旗됊極Í籼䶛炯��핾菪ﯩ瞮䮬儲鷡僵⽀팉￴揃钱窊⇓喇᫖댆ޕ꛳侰࿱몺멏㣔Ꞻ뱺壕롰젙껞暳啗癃�
RDD持久化
共享变量
从这里开始
Spark Streaming
一个快速的例子
基本概念
关联
初始化StreamingContext
离散流
输入DStreams
DStream中的转换
DStream的输出操伩ਾ㸊敮摯扪ਊ㈹㌠〠潢樊㰼ਯ䑥獴⁛ㄳ㈠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㐠〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈹㈠〠刊⽔楴汥
缓存或持久化⤊㸾੥湤潢樊ਲ㤴‰扪਼㰊⽄敳琠嬱㌴‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴′㤵‰⁒ਯ偡牥湴′㠶‰⁒ਯ偲敶′㤳‰⁒ਯ呩瑬攠⣾＀䌀栀攀挀欀瀀漀椀渀琀椀渀朩ਾ㸊敮摯扪ਊ㈹㔠〠潢樊㰼ਯ䑥獴⁛ㄳ㠠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㘠〠刊⽐慲敮琠㈸㘠〠刊⽐牥瘠㈹㐠〠刊⽔楴汥
部署应用程序⤊㸾੥湤潢樊ਲ㤶‰扪਼㰊⽄敳琠嬱㐰‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴′㠶‰⁒ਯ偲敶′㤵‰⁒ਯ呩瑬攠⣾カ텣Ꝟ鑵⡺୞輩ਾ㸊敮摯扪ਊ㈹㜠〠潢樊㰼ਯ䍯畮琠ⴳਯ䑥獴⁛ㄴ㈠〠删⽘奚‶㈠㠴㈠湵汬崊⽆楲獴′㤸‰⁒ਯ䱡獴″〰‰⁒ਯ乥硴″〱‰⁒ਯ偡牥湴′㠴‰⁒ਯ偲敶′㠶‰⁒ਯ呩瑬攠⣾⦆➀ﶌ͏ᠩਾ㸊敮摯扪ਊ㈹㠠〠潢樊㰼ਯ䑥獴⁛ㄴ㐠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㈹㤠〠刊⽐慲敮琠㈹㜠〠刊⽔楴汥
减ᅢ祥灣湶葢枈䱥ਾ㸊敮摯扪ਊ㈹㤠〠潢樊㰼ਯ䑥獴⁛ㄴ㠠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌰〠〠刊⽐慲敮琠㈹㜠〠刊⽐牥瘠㈹㠠〠刊⽔楴汥
设置正确的批容量⤊㸾੥湤潢樊ਲ਼〰‰扪਼㰊⽄敳琠嬱㔰‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴′㤷‰⁒ਯ偲敶′㤹‰⁒ਯ呩瑬攠⣾q蕛墌͏ᠩਾ㸊敮摯扪ਊ㌰ㄠ〠潢樊㰼ਯ䑥獴⁛ㄵ㈠〠删⽘奚‶㈠㠴㈠湵汬崊⽐慲敮琠㈸㐠〠刊⽐牥瘠㈹㜠〠刊⽔楴汥
容错语义⤊㸾੥湤潢樊ਲ਼〲‰扪਼㰊⽃潵湴‭㘊⽄敳琠嬱㔶‰⁒ 塙娠㘲‸㐲畬汝ਯ䙩牳琠㌰㌠〠刊⽌慳琠㌱㈠〠刊⽎數琠㌱㌠〠刊⽐慲敮琠㈶㠠〠刊⽐牥瘠㈸㐠〠刊⽔楴汥
Spark SQL⤊㸾੥湤潢樊ਲ਼〳‰扪਼㰊⽄敳琠嬱㔸‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″〴‰⁒ਯ偡牥湴″〲‰⁒ਯ呩瑬攠⣾⦅Y쬩ਾ㸊敮摯扪ਊ㌰㐠〠潢樊㰼ਯ䍯畮琠ⴴਯ䑥獴⁛ㄶ〠〠删⽘奚‶㈠㠴㈠湵汬崊⽆楲獴″〵‰⁒ਯ䱡獴″〸‰⁒ਯ乥硴″〹‰⁒ਯ偡牥湴″〲‰⁒ਯ偲敶″〳‰⁒ਯ呩瑬攠⣾・灣湮逩ਾ㸊敮摯扪ਊ㌰㔠〠潢樊㰼ਯ䑥獴⁛ㄶ㌠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌰㘠〠刊⽐慲敮琠㌰㐠〠刊⽔楴汥
RDDs⤊㸾੥湤潢樊ਲ਼〶‰扪਼㰊⽄敳琠嬱㘷‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″〷‰⁒ਯ偡牥湴″〴‰⁒ਯ偲敶″〵‰⁒ਯ呩瑬攠⣾＀瀀愀爀焀甀攀瑥蝎ਾ㸊敮摯扪ਊ㌰㜠〠潢樊㰼ਯ䑥獴⁛ㄶ㤠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌰㠠〠刊⽐慲敮琠㌰㐠〠刊⽐牥瘠㌰㘠〠刊⽔楴汥
JSON数据集⤊㸾੥湤潢樊ਲ਼〸‰扪਼㰊⽄敳琠嬱㜱‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴″〴‰⁒ਯ偲敶″〷‰⁒ਯ呩瑬攠⣾＀䠀椀瘀斈栩ਾ㸊敮摯扪ਊ㌰㤠〠潢樊㰼ਯ䑥獴⁛ㄷ㌠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱〠〠刊⽐慲敮琠㌰㈠〠刊⽐牥瘠㌰㐠〠刊⽔楴汥
性能调优⤊㸾੥湤潢樊ਲ਼㄰‰扪਼㰊⽄敳琠嬱㜵‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″ㄱ‰⁒ਯ偡牥湴″〲‰⁒ਯ偲敶″〹‰⁒ਯ呩瑬攠⣾q癛茀匀儀䱣ꕓਾ㸊敮摯扪ਊ㌱ㄠ〠潢樊㰼ਯ䑥獴⁛ㄷ㤠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㈠〠刊⽐慲敮琠㌰㈠〠刊⽐牥瘠㌱〠〠刊⽔楴汥
编写语言集成(Language-Integrated)的相关查询⤊㸾੥湤潢樊ਲ਼ㄲ‰扪਼㰊⽄敳琠嬱㠱‰⁒ 塙娠㘲‸㐲畬汝ਯ偡牥湴″〲‰⁒ਯ偲敶″ㄱ‰⁒ਯ呩瑬攠⣾＀匀瀀愀爀欀 匀儀䱥灣湼筗謩ਾ㸊敮摯扪ਊ㌱㌠〠潢樊㰼ਯ䍯畮琠ⴱ㈊⽄敳琠嬱㠶‰⁒ 塙娠㘲‸㐲畬汝ਯ䙩牳琠㌱㐠〠刊⽌慳琠㌲㔠〠刊⽐慲敮琠㈶㠠〠刊⽐牥瘠㌰㈠〠刊⽔楴汥
GraphX编程指南⤊㸾੥湤潢樊ਲ਼ㄴ‰扪਼㰊⽄敳琠嬱㤴‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″ㄵ‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ呩瑬攠⣾⦅Y쬩ਾ㸊敮摯扪ਊ㌱㔠〠潢樊㰼ਯ䑥獴⁛ㄹ㘠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㘠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㐠〠刊⽔楴汥
幠❖︩ਾ㸊敮摯扪ਊ㌱㘠〠潢樊㰼ਯ䑥獴⁛㈰㔠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㜠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㔠〠刊⽔楴汥
图操佻☩ਾ㸊敮摯扪ਊ㌱㜠〠潢樊㰼ਯ䑥獴⁛㈲〠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌱㠠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㘠〠刊⽔楴汥
Pregel API⤊㸾੥湤潢樊ਲ਼ㄸ‰扪਼㰊⽄敳琠嬲㈴‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″ㄹ‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″ㄷ‰⁒ਯ呩瑬攠⣾v﹧蒐₀ԩਾ㸊敮摯扪ਊ㌱㤠〠潢樊㰼ਯ䑥獴⁛㈲㘠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌲〠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌱㠠〠刊⽔楴汥
顶点和边RDDs⤊㸾੥湤潢樊ਲ਼㈰‰扪਼㰊⽄敳琠嬲㌰‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″㈱‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″ㄹ‰⁒ਯ呩瑬攠⣾vﹻ靬픩ਾ㸊敮摯扪ਊ㌲ㄠ〠潢樊㰼ਯ䑥獴⁛㈳㔠〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌲㈠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌲〠〠刊⽔楴汥
例子⤊㸾੥湤潢樊ਲ਼㈲‰扪਼㰊⽄敳琠嬲㌷‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″㈳‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″㈱‰⁒ਯ呩瑬攠⣾」큎ꑞ鑵⡺୞輩ਾ㸊敮摯扪ਊ㌲㌠〠潢樊㰼ਯ䑥獴⁛㈴ㄠ〠删⽘奚‶㈠㠴㈠湵汬崊⽎數琠㌲㐠〠刊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌲㈠〠刊⽔楴汥
独立运行Spark⤊㸾੥湤潢樊ਲ਼㈴‰扪਼㰊⽄敳琠嬲㔱‰⁒ 塙娠㘲‸㐲畬汝ਯ乥硴″㈵‰⁒ਯ偡牥湴″ㄳ‰⁒ਯ偲敶″㈳‰⁒ਯ呩瑬攠⣾w⠀礀愀爀湎એ킈䰀匀瀀愀爀欩ਾ㸊敮摯扪ਊ㌲㔠〠潢樊㰼ਯ䑥獴⁛㈵㔠〠删⽘奚‶㈠㠴㈠湵汬崊⽐慲敮琠㌱㌠〠刊⽐牥瘠㌲㐠〠刊⽔楴汥
Spark配置⤊㸾੥湤潢樊ਲ਼㈶‰扪਼㰠⽌敮杴栱‶㠰㘴 䙩汴敲⁛⽆污瑥䑥捯摥崠⽌敮杴栠㌰㈷㘠⽄䰠㘸〶㐠㸾ੳ瑲敡洊碜祼哅ሿ嫕�덏虌–☉䮀蒄␣魁䓂鹡䯀낉䨄吐薰䌐䇅Յ䁅呔࢈訫ꢸ†뢠ퟫ嗰諞ꮨ点䣎볪㹧숤胺篯ﷳ�酯�ꪺ몪笒ā쀊唠䇮胁㥹끩�铲⪡ﲚ魧蒮ﱻ뼳˜ી陎ꢜ磽鲱⾸¤贀옝Ꭿ鬵ꇋ띝ảيź㠧负嬑箠ꨆꃿ⒪�ሥ��ꇷ෴鸱ᤳ眽ᱺ�큲푵厯᧋뜁�ꋷ諫쟎겴⾑踁걛䣥䎕厧켸燹쉏瀞畛껨୨塋揨঒ﰘ긂Հ祐즧儆㔪紈᎘�カ䅦ﰣἅ䮬Ѧ욨해ʴ뽼灏血⡖ꭼ갎쑼捷�ຸ＀쨼�␩ﮕﵰ㮽怒雸�⍷į�჻醿鷻ꤎ蟿圿⚍흠⭬梐디袗莴巰ᘼ⶞Ẃᕿ탬䮰奿娍歠쥅쭝ଋꢝ跔ᄍ伹ꗎ與꣧鷰ӱ봹꽓⽠鯂꽱⿜൏勉믡䗺蘿槕汶૮暃㐏㊚鰌⮩簹泄鄰虒뗏᠘ནᬵ娍ꯠ熸锴룾ꏌ诽៬뗏퇈靑㯷셤뢑ⓩꡭᘻԝ삮縂뮤㐚ﬖ硞咙ឯ欬隮支ざ䝚୷셄쉘ﲜ욹䊺ﰏ룹￸掘❏ʯ벏甮跽ஒ탋쒍莑⭆躈阎ᴲ磐삒ŗ꫟镽讯뭗켞靇誺忖굫韂캝㨖듏쵩ힶ䷋ᙙ餙Ư쯩䢲嬭暓토젒䍨Ꭺ쇲�剦죕杬롷硬燛㚡�䦽�帓ᨛꨡ≧薋譅剸汍꠼咓䕤求特䶄䩎桔㊢閌풗䑧ꠛ瓣嶄䌵ݺ蕃㭱쓀剺廑⬜෕ﰤ黻譧㥋볘㶝檈凱톆竗祒痯爚⍮덚窆箎랴洃�噺듒卍쭰泙᷅ͫ�쬶ئ㯯陦�汅䷉샒�苩뙭𥳐⒅箉⳨
缓存或持久化
Checkpointing
部署应用程序
监控应用程序
性能调优
减ᅢ祥灣湶葢枈䱥�
设置正确的批容量
内存调优
容错语义
Spark SQL
开始
数据源
RDDs
parquet文件
JSON数据集
Hive表
性能调优
其它SQL接口
编写语言集成(Language-Integrated)的相关查询
Spark SQL数据类型
GraphX编程指南
开始
幠❖�
图操佻�
Pregel API
图构造者
顶点和边RDDs
图算法
例子
提交应用程序
独立运行Spark
在yarn上运行Spark
Spark配置
Table of Contents 1. Introduction 2. 快速上手 i. Spark Shell ii. 独立应用程序 iii. 开始翻滚吧! 3. 编程指南 i. 引入 Spark ii. 初始化 Spark iii. Spark RDDs i. 并行集合 ii. 外部数据集 iii. RDD 操作 i. 传递函数到 Spark ii. 使用键值对 iii. Transformations iv. Actions iv. RDD持久化 iv. 共享变量 v. 从这里开始 4. Spark Streaming i. 一个快速的例子 ii. 基本概念 i. 关联 ii. 初始化StreamingContext iii. 离散流 iv. 输入DStreams v. DStream中的转换 vi. DStream的输出操作 vii. 缓存或持久化 viii. Checkpointing ix. 部署应用程序 x. 监控应用程序 iii. 性能调优 i. 减少批数据的执行时间 ii. 设置正确的批容量 iii. 内存调优 iv. 容错语义 5. Spark SQL i. 开始 ii. 数据源 i. RDDs ii. parquet文件 iii. JSON数据集 iv. Hive表 iii. 性能调优 iv. 其它SQL接口 v. 编写语言集成(Language-Integrated)的相关查询 vi. Spark SQL数据类型 6. GraphX编程指南 i. 开始 ii. 属性图 iii. 图操作符
iv. Pregel API v. 图构造者 vi. 顶点和边RDDs vii. 图算法 viii. 例子 7. 部署 i. 提交应用程序 ii. 独立运行Spark iii. 在yarn上运行Spark 8. 更多文档 i. Spark配置
Spark 编程指南简体中文版 Introduction 快速上手 Spark Shell 独立应用程序 开始翻滚吧! 编程指南 引入 Spark 初始化 Spark Spark RDDs 并行集合 外部数据集 RDD 操作 传递函数到 Spark 使用键值对 Transformations Actions RDD持久化 共享变量 从这里开始 Spark Streaming 一个快速的例子 基本概念 关联 初始化StreamingContext 离散流 输入DStreams DStream中的转换 DStream的输出操作 缓存或持久化 Checkpointing 部署应用程序 监控应用程序 性能调优 减少批数据的执行时间 设置正确的批容量 内存调优 容错语义 Spark SQL 开始 数据源 RDDs parquet文件 JSON数据集 Hive表 性能调优 其它SQL接口 编写语言集成(Language-Integrated)的相关查询 Spark SQL数据类型 GraphX编程指南 开始 属性图 图操作符
Pregel API 图构造者 顶点和边RDDs 图算法 例子 部署 提交应用程序 独立运行Spark 在yarn上运行Spark 更多文档 Spark配置 Copyright 本文翻译自Spark 官方文档 License 本文使用的许可请查看这里
快速上手 本节课程提供一个使用 Spark 的快速介绍,首先我们使用 Spark 的交互式 shell(用 Python 或 Scala) 介绍它的 API。当演示 如何在 Java, Scala 和 Python 写独立的程序时,看编程指南里完整的参考。 依照这个指南,首先从 Spark 网站下载一个 Spark 发行包。因为我们不会使用 HDFS,你可以下载任何 Hadoop 版本的包。 Spark Shell 独立应用程序 开始翻滚吧!
使用 Spark Shell 基础 Spark 的 shell 作为一个强大的交互式数据分析工具,提供了一个简单的方式来学习 API。它可以使用 Scala(在 Java 虚拟机 上运行现有的 Java 库的一个很好方式) 或 Python。在 Spark 目录里使用下面的方式开始运行: ./bin/spark-shell Spark 最主要的抽象是叫Resilient Distributed Dataset(RDD) 的弹性分布式集合。RDDs 可以使用 Hadoop InputFormats(例 如 HDFS 文件)创建,也可以从其他的 RDDs 转换。让我们在 Spark 源代码目录从 README 文本文件中创建一个新的 RDD。 scala> val textFile = sc.textFile("README.md") textFile: spark.RDD[String] = spark.MappedRDD@2ee9b6e3 RDD 的 actions 从 RDD 中返回值,transformations 可以转换成一个新 RDD 并返回它的引用。让我们开始使用几个操作: scala> textFile.count() // RDD 的数据条数 res0: Long = 126 scala> textFile.first() // RDD 的第一行数据 res1: String = # Apache Spark 现在让我们使用一个 transformation,我们将使用 filter 在这个文件里返回一个包含子数据集的新 RDD。 scala> val linesWithSpark = textFile.filter(line => line.contains("Spark")) linesWithSpark: spark.RDD[String] = spark.FilteredRDD@7dd4af09 我们可以把 actions 和 transformations 链接在一起: scala> textFile.filter(line => line.contains("Spark")).count() // 有多少行包括 "Spark"? res3: Long = 15 更多 RDD 操作 RDD actions 和 transformations 能被用在更多的复杂计算中。比方说,我们想要找到一行中最多的单词数量: scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b) res4: Long = 15 首先将行映射成一个整型数值产生一个新 RDD。 在这个新的 RDD 上调用 reduce 找到行中最大的个数。 map 和 reduce 的参数是 Scala 的函数串(闭包),并且可以使用任何语言特性或者 Scala/Java 类库。例如,我们可以很方便地调用其他的函 数声明。 我们使用 Math.max() 函数让代码更容易理解: scala> import java.lang.Math import java.lang.Math scala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
res5: Int = 15 Hadoop 流行的一个通用的数据流模式是 MapReduce。Spark 能很容易地实现 MapReduce: scala> val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b) wordCounts: spark.RDD[(String, Int)] = spark.ShuffledAggregatedRDD@71f027b8 这里,我们结合 flatMap, map 和 reduceByKey 来计算文件里每个单词出现的数量,它的结果是包含一组(String, Int) 键值对 的 RDD。我们可以使用 [collect] 操作在我们的 shell 中收集单词的数量: scala> wordCounts.collect() res6: Array[(String, Int)] = Array((means,1), (under,2), (this,3), (Because,1), (Python,2), (agree,1), (cluster.,1), ...) 缓存 Spark 支持把数据集拉到集群内的内存缓存中。当要重复访问时这是非常有用的,例如当我们在一个小的热(hot)数据集中查 询,或者运行一个像网页搜索排序这样的重复算法。作为一个简单的例子,让我们把 linesWithSpark 数据集标记在缓存中: scala> linesWithSpark.cache() res7: spark.RDD[String] = spark.FilteredRDD@17e51082 scala> linesWithSpark.count() res8: Long = 15 scala> linesWithSpark.count() res9: Long = 15 缓存 100 行的文本文件来研究 Spark 这看起来很傻。真正让人感兴趣的部分是我们可以在非常大型的数据集中使用同样的函 数,甚至在 10 个或者 100 个节点中交叉计算。你同样可以使用 bin/spark-shell 连接到一个 cluster 来替换掉编程指南中的 方法进行交互操作。
分享到:
收藏