Spark Talk Slides
BIN
slides/talks/2018-3-DBSpark/graphics/FullText-white.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
slides/talks/2018-3-DBSpark/graphics/ferrari.jpg
Normal file
After Width: | Height: | Size: 237 KiB |
BIN
slides/talks/2018-3-DBSpark/graphics/hadoop.png
Normal file
After Width: | Height: | Size: 31 KiB |
19834
slides/talks/2018-3-DBSpark/graphics/hadoopVSdbs.svg
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
slides/talks/2018-3-DBSpark/graphics/mapreduce.pdf
Normal file
BIN
slides/talks/2018-3-DBSpark/graphics/mapreduce.png
Normal file
After Width: | Height: | Size: 320 KiB |
BIN
slides/talks/2018-3-DBSpark/graphics/spark.png
Normal file
After Width: | Height: | Size: 19 KiB |
255
slides/talks/2018-3-DBSpark/graphics/sparkstack.svg
Normal file
|
@ -0,0 +1,255 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="106.58931mm"
|
||||
height="258.58582mm"
|
||||
viewBox="0 0 106.58931 258.58582"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.3 (unknown)"
|
||||
sodipodi:docname="sparkstack.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="133.85587"
|
||||
inkscape:cy="563.07146"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1388"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-23.81249,52.867031)">
|
||||
<g
|
||||
id="g846"
|
||||
transform="rotate(-90,78.713538,150.81772)"
|
||||
class="fragment">
|
||||
<rect
|
||||
y="95.916672"
|
||||
x="23.8125"
|
||||
height="35.529766"
|
||||
width="109.80208"
|
||||
id="rect827"
|
||||
style="opacity:0.8;fill:#c8c89c;fill-opacity:0.94117647;stroke:none;stroke-width:0.26087502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text831"
|
||||
y="118.72517"
|
||||
x="78.369026"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;stroke-width:0.26458332px"
|
||||
y="118.72517"
|
||||
x="78.369026"
|
||||
id="tspan829"
|
||||
sodipodi:role="line">Text Files</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g841"
|
||||
class="fragment">
|
||||
<rect
|
||||
style="opacity:0.8;fill:#90a0a0;fill-opacity:0.94117647;stroke:none;stroke-width:0.25703016;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect821"
|
||||
width="106.5893"
|
||||
height="35.529778"
|
||||
x="23.8125"
|
||||
y="60.386909" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="76.762642"
|
||||
y="83.195412"
|
||||
id="text825"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan823"
|
||||
x="76.762642"
|
||||
y="83.195412"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.26458332px">RDDs</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g908"
|
||||
class="fragment">
|
||||
<g
|
||||
id="g856"
|
||||
transform="rotate(-90,96.478423,133.05284)">
|
||||
<rect
|
||||
y="95.916672"
|
||||
x="23.8125"
|
||||
height="35.529766"
|
||||
width="109.80208"
|
||||
id="rect850"
|
||||
style="opacity:0.8;fill:#e4cc88;fill-opacity:0.94117647;stroke:none;stroke-width:0.26087502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text854"
|
||||
y="118.72517"
|
||||
x="78.369026"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;stroke-width:0.26458332px"
|
||||
y="118.72517"
|
||||
x="78.369026"
|
||||
id="tspan852"
|
||||
sodipodi:role="line">Hadoop</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="rotate(-90,114.24331,115.28796)"
|
||||
id="g864">
|
||||
<rect
|
||||
style="opacity:0.8;fill:#dcc07c;fill-opacity:0.94117647;stroke:none;stroke-width:0.26087502;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect858"
|
||||
width="109.80208"
|
||||
height="35.529766"
|
||||
x="23.8125"
|
||||
y="95.916672" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="78.369026"
|
||||
y="118.72517"
|
||||
id="text862"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan860"
|
||||
x="78.369026"
|
||||
y="118.72517"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;stroke-width:0.26458332px">Relational DB</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g836"
|
||||
class="fragment">
|
||||
<rect
|
||||
y="24.857143"
|
||||
x="23.8125"
|
||||
height="35.529766"
|
||||
width="106.58929"
|
||||
id="rect815"
|
||||
style="opacity:0.8;fill:#908470;fill-opacity:0.94117647;stroke:none;stroke-width:0.2570301;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text819"
|
||||
y="47.665646"
|
||||
x="76.762634"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.26458332px"
|
||||
y="47.665646"
|
||||
x="76.762634"
|
||||
id="tspan817"
|
||||
sodipodi:role="line">Data Frames</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="rotate(-90,23.812501,24.857145)"
|
||||
id="g888"
|
||||
class="fragment">
|
||||
<rect
|
||||
y="24.857143"
|
||||
x="23.8125"
|
||||
height="35.529766"
|
||||
width="77.724174"
|
||||
id="rect882"
|
||||
style="opacity:0.8;fill:#909050;fill-opacity:0.94117647;stroke:none;stroke-width:0.21948522;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text886"
|
||||
y="46.514984"
|
||||
x="62.24395"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.26458332px"
|
||||
y="46.514984"
|
||||
x="62.24395"
|
||||
id="tspan884"
|
||||
sodipodi:role="line">Raw Access</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g898"
|
||||
class="fragment">
|
||||
<g
|
||||
transform="rotate(-90,41.577384,7.0922623)"
|
||||
id="g872">
|
||||
<rect
|
||||
y="24.857143"
|
||||
x="23.8125"
|
||||
height="35.529766"
|
||||
width="77.724174"
|
||||
id="rect866"
|
||||
style="opacity:0.8;fill:#68783c;fill-opacity:0.94117647;stroke:none;stroke-width:0.21948522;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text870"
|
||||
y="46.514984"
|
||||
x="62.24395"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.26458332px"
|
||||
y="46.514984"
|
||||
x="62.24395"
|
||||
id="tspan868"
|
||||
sodipodi:role="line">SparkSQL</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g880"
|
||||
transform="rotate(-90,59.342264,-10.672621)">
|
||||
<rect
|
||||
style="opacity:0.8;fill:#405c24;fill-opacity:0.94117647;stroke:none;stroke-width:0.21948522;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect874"
|
||||
width="77.724174"
|
||||
height="35.529766"
|
||||
x="23.8125"
|
||||
y="24.857143" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="62.24395"
|
||||
y="46.514984"
|
||||
id="text878"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan876"
|
||||
x="62.24395"
|
||||
y="46.514984"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:0.26458332px">SparkML</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:0.8;fill:none;fill-opacity:0.94117647;stroke:#ff0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect977"
|
||||
width="128.28937"
|
||||
height="46.772167"
|
||||
x="12.854439"
|
||||
y="54.4496"
|
||||
class="fragment" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
BIN
slides/talks/2018-3-DBSpark/graphics/tank.jpg
Normal file
After Width: | Height: | Size: 576 KiB |
287
slides/talks/2018-3-DBSpark/index.html
Normal file
|
@ -0,0 +1,287 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>Spark</title>
|
||||
|
||||
<meta name="description" content="Mimir">
|
||||
<meta name="author" content="Oliver Kennedy">
|
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
|
||||
|
||||
<link rel="stylesheet" href="../reveal.js-3.5.0/css/reveal.css">
|
||||
<link rel="stylesheet" href="ubodin.css" id="theme">
|
||||
|
||||
<!-- Code syntax highlighting -->
|
||||
<link rel="stylesheet" href="../reveal.js-3.5.0/lib/css/zenburn.css">
|
||||
|
||||
<!-- Printing and PDF exports -->
|
||||
<script>
|
||||
var link = document.createElement( 'link' );
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js-3.5.0/css/print/pdf.css' : '../reveal.js-3.5.0/css/print/paper.css';
|
||||
document.getElementsByTagName( 'head' )[0].appendChild( link );
|
||||
</script>
|
||||
|
||||
<script>document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1"></' + 'script>')</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../reveal.js-3.5.0/lib/js/html5shiv.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="reveal">
|
||||
<!-- Any section element inside of this container is displayed as a slide -->
|
||||
|
||||
<div class="header">
|
||||
<!-- Any Talk-Specific Header Content Goes Here -->
|
||||
Spark
|
||||
</div>
|
||||
<div class="footer">
|
||||
<!-- Any Talk-Specific Footer Content Goes Here -->
|
||||
<div style="float: left; margin-top: 15px; ">
|
||||
Exploring <u><b>O</b></u>nline <u><b>D</b></u>ata <u><b>In</b></u>teractions
|
||||
</div>
|
||||
<img src="graphics/FullText-white.png" height="40" style="float: right;"/>
|
||||
</div>
|
||||
|
||||
<div class="slides">
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h2>Spark</h2>
|
||||
<h4>(NoSQL, but with SQL)</h4>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>First a little history</h3>
|
||||
|
||||
<dl>
|
||||
<div class="fragment">
|
||||
<dt>Early-Mid 1900s</dt>
|
||||
<dd>Computers used for tabulating data</dd>
|
||||
</div>
|
||||
<div class="fragment">
|
||||
<dt>1970s</dt>
|
||||
<dd>Relational model, Postgres, System-R, Oracle, DB2</dd>
|
||||
</div>
|
||||
<div class="fragment">
|
||||
<dt>1980</dt>
|
||||
<dd>Lotus, dBase</dd>
|
||||
</div>
|
||||
<div class="fragment">
|
||||
<dt>1990s</dt>
|
||||
<dd>Object/Object-Relational Databases, Distributed Databases</dd>
|
||||
</div>
|
||||
<div class="fragment">
|
||||
<dt>2000s</dt>
|
||||
<dd>The Dark Ages...</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p><b>Google: </b> Databases suck! Use Map/Reduce Instead</p>
|
||||
<img src="graphics/mapreduce.png" height="500px">
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p><b>Yahoo: </b> Our Map/Reduce implementation is open source</p>
|
||||
<img src="graphics/hadoop.png" height="500px">
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>The Good</h3>
|
||||
<ul>
|
||||
<li class="fragment">Programmer-Friendly Language</li>
|
||||
<li class="fragment">Distributed-Computing-Friendly Metaphors</li>
|
||||
<li class="fragment">Extremely Resilient Runtime</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>The Bad</h3>
|
||||
<ul>
|
||||
<li class="fragment"><strike>Programmer-Friendly</strike>Non-Declarative Language</li>
|
||||
<li class="fragment"><strike>Distributed-Computing-Friendly</strike>Programmer-Hostile Metaphors</li>
|
||||
<li class="fragment">Extremely <strike>Resilient</strike>Slow Runtime</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<img src="graphics/hadoopVSdbs.svg">
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<img src="graphics/spark.png" height="400px">
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Key Features</h3>
|
||||
<ul>
|
||||
<li>High-performance resilience.</li>
|
||||
<li>Use of metaphors to extract parallelism.</li>
|
||||
<li>Lots of metaphors for distributed programming.</li>
|
||||
<li>If you can do it in { Scala, Python, Java, R }, you can do it in Spark.</li>
|
||||
<li>If you know SQL and { Scala, Python, Java, R }, you know Spark</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<svg data-src="graphics/sparkstack.svg" height="600px">
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>Resilient Distributed Data Structures (RDDs)</h3>
|
||||
|
||||
<dl style="font-size: 75%">
|
||||
<div class="fragment">
|
||||
<dt>Read-Only</dt>
|
||||
<dd>You can't insert, update, or modify rows...</dd>
|
||||
</div>
|
||||
|
||||
<div class="fragment">
|
||||
<dt>Transformable</dt>
|
||||
<dd>... but you can create (cheaply) new RDDs by modifying existing RDDs.</dd>
|
||||
</div>
|
||||
|
||||
<div class="fragment">
|
||||
<dt>Opaque</dt>
|
||||
<dd>Spark just sees a bunch of rows. It doesn't know how to interpret them.</dd>
|
||||
</div>
|
||||
|
||||
<div class="fragment">
|
||||
<dt>Lazy</dt>
|
||||
<dd>Spark saves <b>how</b> to construct an RDD, but waits to actually do so.</dd>
|
||||
</div>
|
||||
|
||||
<div class="fragment">
|
||||
<dt>Distributed</dt>
|
||||
<dd>When Spark constructs an RDD, it automatically assigns rows to workers.</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Where do RDDs come from</h3>
|
||||
|
||||
<ul>
|
||||
<li>Call "parallelize" on a { Scala, Python, Java, R } array/collection</li>
|
||||
<li>Load a text file from disk or HDFS (1 row per line).</li>
|
||||
<li>Load a database table (1 row per row).</li>
|
||||
<li>Transform (map, flatMap, filter) an existing RDD.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<div>
|
||||
<h3>FlatMap?</h3>
|
||||
<p>A function that reads in one row and returns any number of rows.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Map?</h3>
|
||||
<p>A function that reads in one row and returns one row.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Filter?</h3>
|
||||
<p>A function that reads in one row and returns true (keep) or false (toss).</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Resilient Distributed Data Structures (RDDs)</h3>
|
||||
|
||||
<dl style="font-size: 75%">
|
||||
<div>
|
||||
<dt>Read-Only</dt>
|
||||
<dd>You can't insert, update, or modify rows...</dd>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<dt>Transformable</dt>
|
||||
<dd>... but you can create (cheaply) new RDDs by modifying existing RDDs.</dd>
|
||||
</div>
|
||||
|
||||
<div class="fragment highlight-blue">
|
||||
<dt>Opaque</dt>
|
||||
<dd>Spark just sees a bunch of rows. It doesn't know how to interpret them.</dd>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<dt>Lazy</dt>
|
||||
<dd>Spark saves <b>how</b> to construct an RDD, but waits to actually do so.</dd>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<dt>Distributed</dt>
|
||||
<dd>When Spark constructs an RDD, it automatically assigns rows to workers.</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<section>
|
||||
<h3>DataFrames</h3>
|
||||
|
||||
<p>RDDs with Schemas: Every row has a set of attributes and all of the records have the same attributes.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h1>Demo</h1>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
</div></div>
|
||||
|
||||
<script src="../reveal.js-3.5.0/lib/js/head.min.js"></script>
|
||||
<script src="../reveal.js-3.5.0/js/reveal.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
// Full list of configuration options available at:
|
||||
// https://github.com/hakimel/../reveal.js#configuration
|
||||
Reveal.initialize({
|
||||
controls: false,
|
||||
progress: true,
|
||||
history: true,
|
||||
center: true,
|
||||
slideNumber: true,
|
||||
|
||||
transition: 'fade', // none/fade/slide/convex/concave/zoom
|
||||
|
||||
// Optional ../reveal.js plugins
|
||||
dependencies: [
|
||||
{ src: '../reveal.js-3.5.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
|
||||
{ src: '../reveal.js-3.5.0/plugin/math/math.js',
|
||||
condition: function() { return true; },
|
||||
mathjax: '../reveal.js-3.5.0/js/MathJax.js'
|
||||
},
|
||||
{ src: '../reveal.js-3.5.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
||||
{ src: '../reveal.js-3.5.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
||||
{ src: '../reveal.js-3.5.0/plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
|
||||
{ src: '../reveal.js-3.5.0/plugin/zoom-js/zoom.js', async: true },
|
||||
{ src: '../reveal.js-3.5.0/plugin/notes/notes.js', async: true },
|
||||
{ src: '../reveal.js-3.5.0/plugin/svginline/es6-promise.auto.js', async: false },
|
||||
{ src: '../reveal.js-3.5.0/plugin/svginline/data-src-svg.js', async: false }
|
||||
]
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
369
slides/talks/2018-3-DBSpark/ubodin.css
Normal file
|
@ -0,0 +1,369 @@
|
|||
@font-face {
|
||||
font-family: 'News Cycle';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('News Cycle'), local('NewsCycle'), url(../reveal.js-3.1.0/fonts/9Xe8dq6pQDsPyVH2D3tMQsDdSZkkecOE1hvV7ZHvhyU.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'News Cycle';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('News Cycle Bold'), local('NewsCycle-Bold'), url(../reveal.js-3.1.0/fonts/G28Ny31cr5orMqEQy6ljt8BaWKZ57bY3RXgXH6dOjZ0.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Lato Regular'), local('Lato-Regular'), url(../reveal.js-3.1.0/fonts/1EqTbJWOZQBfhZ0e3RL9uvesZW2xOQ-xsNqO47m55DA.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Lato Bold'), local('Lato-Bold'), url(../reveal.js-3.1.0/fonts/MZ1aViPqjfvZwVD_tzjjkwLUuEpTyoUstqEm5AMlJo4.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local('Lato Italic'), local('Lato-Italic'), url(../reveal.js-3.1.0/fonts/61V2bQZoWB5DkWAUJStypevvDin1pK8aKteLpeZ5c0A.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: local('Lato Bold Italic'), local('Lato-BoldItalic'), url(../reveal.js-3.1.0/fonts/HkF_qI1x_noxlxhrhMQYECZ2oysoEQEeKwjgmXLRnTc.ttf) format('truetype');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
|
||||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
|
||||
**/
|
||||
/**
|
||||
* A simple theme for reveal.js presentations, similar
|
||||
* to the default theme. The accent color is darkblue.
|
||||
*
|
||||
* This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
|
||||
* reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
|
||||
*/
|
||||
/*********************************************
|
||||
* GLOBAL STYLES
|
||||
*********************************************/
|
||||
body {
|
||||
background: #fff;
|
||||
background-color: #fff; }
|
||||
|
||||
.reveal {
|
||||
font-family: 'Lato', sans-serif;
|
||||
font-size: 36px;
|
||||
font-weight: normal;
|
||||
color: #000; }
|
||||
|
||||
::selection {
|
||||
color: #fff;
|
||||
background: rgba(0, 0, 0, 0.99);
|
||||
text-shadow: none; }
|
||||
|
||||
.reveal .slides > section, .reveal .slides > section > section {
|
||||
line-height: 1.3;
|
||||
font-weight: inherit; }
|
||||
|
||||
/*********************************************
|
||||
* STATIC HEADER/FOOTER
|
||||
*********************************************/
|
||||
|
||||
.reveal .header {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 25px;
|
||||
text-align: center;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 15px;
|
||||
background-color: #041a9b;
|
||||
color: white;
|
||||
font-size: 0.5em;
|
||||
z-index: 100;
|
||||
}
|
||||
.reveal .footer {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 20px;
|
||||
background-color: #041a9b;
|
||||
color: white;
|
||||
font-size: 0.5em;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* HEADERS
|
||||
*********************************************/
|
||||
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
|
||||
margin: 0 0 20px 0;
|
||||
color: #000;
|
||||
font-family: 'News Cycle', Impact, sans-serif;
|
||||
font-weight: normal;
|
||||
line-height: 1.2;
|
||||
letter-spacing: normal;
|
||||
text-transform: none;
|
||||
text-shadow: none;
|
||||
word-wrap: break-word; }
|
||||
|
||||
.reveal h1 {
|
||||
font-size: 3.77em; }
|
||||
|
||||
.reveal h2 {
|
||||
font-size: 2.11em; }
|
||||
|
||||
.reveal h3 {
|
||||
font-size: 1.55em; }
|
||||
|
||||
.reveal h4 {
|
||||
font-size: 1em; }
|
||||
|
||||
.reveal h1 {
|
||||
text-shadow: none; }
|
||||
|
||||
/*********************************************
|
||||
* OTHER
|
||||
*********************************************/
|
||||
.reveal p {
|
||||
margin: 20px 0;
|
||||
line-height: 1.3; }
|
||||
|
||||
.reveal imagecredits {
|
||||
font-size: 12pt;
|
||||
position: absolute;
|
||||
right: -10px;
|
||||
bottom: -10px;
|
||||
text-align: right;
|
||||
}
|
||||
.reveal citation {
|
||||
font-size: 12pt;
|
||||
position: absolute;
|
||||
right: -10px;
|
||||
bottom: -10px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Ensure certain elements are never larger than the slide itself */
|
||||
.reveal img, .reveal video, .reveal iframe {
|
||||
max-width: 95%;
|
||||
max-height: 95%; }
|
||||
|
||||
.reveal strong, .reveal b {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal em {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal ol, .reveal dl, .reveal ul {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin: 0 0 0 1em; }
|
||||
|
||||
.reveal ol {
|
||||
list-style-type: decimal; }
|
||||
|
||||
.reveal ul {
|
||||
list-style-type: disc; }
|
||||
|
||||
.reveal ul > li {
|
||||
margin-top: 20px; }
|
||||
|
||||
.reveal ul ul {
|
||||
list-style-type: square; }
|
||||
|
||||
.reveal ul ul ul {
|
||||
list-style-type: circle; }
|
||||
|
||||
.reveal ul ul, .reveal ul ol, .reveal ol ol, .reveal ol ul {
|
||||
display: block;
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal dt {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal dd {
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal q, .reveal blockquote {
|
||||
quotes: none; }
|
||||
|
||||
.reveal blockquote {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 70%;
|
||||
margin: 20px auto;
|
||||
padding: 5px;
|
||||
font-style: italic;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.reveal blockquote p:first-child, .reveal blockquote p:last-child {
|
||||
display: inline-block; }
|
||||
|
||||
.reveal q {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal pre {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 90%;
|
||||
margin: 20px auto;
|
||||
text-align: left;
|
||||
font-size: 0.55em;
|
||||
font-family: monospace;
|
||||
line-height: 1.2em;
|
||||
word-wrap: break-word;
|
||||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
|
||||
|
||||
.reveal code {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.reveal pre code {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
max-height: 400px;
|
||||
word-wrap: normal;
|
||||
background: #3F3F3F;
|
||||
color: #DCDCDC; }
|
||||
|
||||
.reveal table {
|
||||
margin: auto;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0; }
|
||||
|
||||
.reveal table th {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid; }
|
||||
|
||||
.reveal table th, .reveal table td {
|
||||
text-align: center;
|
||||
padding: 0.2em 0.5em 0.2em 0.5em;}
|
||||
|
||||
.reveal table th[align="left"], .reveal table td[align="left"] {
|
||||
text-align: left; }
|
||||
|
||||
.reveal table th[align="right"], .reveal table td[align="right"] {
|
||||
text-align: right; }
|
||||
|
||||
.reveal table tr:last-child td {
|
||||
border-bottom: none; }
|
||||
|
||||
.reveal sup {
|
||||
vertical-align: super; }
|
||||
|
||||
.reveal sub {
|
||||
vertical-align: sub; }
|
||||
|
||||
.reveal small {
|
||||
display: inline-block;
|
||||
font-size: 0.6em;
|
||||
line-height: 1.2em;
|
||||
vertical-align: top; }
|
||||
|
||||
.reveal small * {
|
||||
vertical-align: top; }
|
||||
|
||||
/*********************************************
|
||||
* LINKS
|
||||
*********************************************/
|
||||
.reveal a {
|
||||
color: #00008B;
|
||||
text-decoration: none;
|
||||
-webkit-transition: color 0.15s ease;
|
||||
-moz-transition: color 0.15s ease;
|
||||
transition: color 0.15s ease; }
|
||||
|
||||
.reveal a:hover {
|
||||
color: #0000f1;
|
||||
text-shadow: none;
|
||||
border: none; }
|
||||
|
||||
.reveal .roll span:after {
|
||||
color: #fff;
|
||||
background: #00003f; }
|
||||
|
||||
/*********************************************
|
||||
* IMAGES
|
||||
*********************************************/
|
||||
.reveal section img {
|
||||
margin: 15px 0px;
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
}
|
||||
|
||||
.reveal section img.bordered
|
||||
{
|
||||
border: 4px solid #000;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.reveal a img {
|
||||
-webkit-transition: all 0.15s linear;
|
||||
-moz-transition: all 0.15s linear;
|
||||
transition: all 0.15s linear; }
|
||||
|
||||
.reveal a:hover img {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-color: #00008B;
|
||||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
|
||||
|
||||
/*********************************************
|
||||
* NAVIGATION CONTROLS
|
||||
*********************************************/
|
||||
.reveal .controls div.navigate-left, .reveal .controls div.navigate-left.enabled {
|
||||
border-right-color: #00008B; }
|
||||
|
||||
.reveal .controls div.navigate-right, .reveal .controls div.navigate-right.enabled {
|
||||
border-left-color: #00008B; }
|
||||
|
||||
.reveal .controls div.navigate-up, .reveal .controls div.navigate-up.enabled {
|
||||
border-bottom-color: #00008B; }
|
||||
|
||||
.reveal .controls div.navigate-down, .reveal .controls div.navigate-down.enabled {
|
||||
border-top-color: #00008B; }
|
||||
|
||||
.reveal .controls div.navigate-left.enabled:hover {
|
||||
border-right-color: #0000f1; }
|
||||
|
||||
.reveal .controls div.navigate-right.enabled:hover {
|
||||
border-left-color: #0000f1; }
|
||||
|
||||
.reveal .controls div.navigate-up.enabled:hover {
|
||||
border-bottom-color: #0000f1; }
|
||||
|
||||
.reveal .controls div.navigate-down.enabled:hover {
|
||||
border-top-color: #0000f1; }
|
||||
|
||||
/*********************************************
|
||||
* PROGRESS BAR
|
||||
*********************************************/
|
||||
.reveal .progress {
|
||||
background: rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.reveal .progress span {
|
||||
background: #00008B;
|
||||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
|
||||
|
||||
/*********************************************
|
||||
* SLIDE NUMBER
|
||||
*********************************************/
|
||||
.reveal .slide-number {
|
||||
color: #00008B; }
|