CINXE.COM

<!doctype html><html lang="en"><head><title data-rh="true">Using Presto in our Big Data Platform on AWS | by Netflix Technology Blog | Netflix TechBlog</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2017-04-19T14:43:49.170Z"/><meta data-rh="true" name="title" content="Using Presto in our Big Data Platform on AWS | by Netflix Technology Blog | Netflix TechBlog"/><meta data-rh="true" property="og:title" content="Using Presto in our Big Data Platform on AWS"/><meta data-rh="true" property="al:android:url" content="medium://p/938035909fd4"/><meta data-rh="true" property="al:ios:url" content="medium://p/938035909fd4"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="Seven months ago, we first deployed Presto into production and it is now an integral part of our data ecosystem. In this blog post, we would like to share our experience with Presto."/><meta data-rh="true" property="og:description" content="low-latency interactive data exploration"/><meta data-rh="true" property="og:url" content="https://netflixtechblog.com/using-presto-in-our-big-data-platform-on-aws-938035909fd4"/><meta data-rh="true" property="al:web:url" content="https://netflixtechblog.com/using-presto-in-our-big-data-platform-on-aws-938035909fd4"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fill:584:307/g:fp:0.38:0.39/0*4b5v_0dMG69-V1TE."/><meta data-rh="true" property="article:author" content="https://netflixtechblog.medium.com"/><meta data-rh="true" name="author" content="Netflix Technology Blog"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Using Presto in our Big Data Platform on AWS"/><meta data-rh="true" name="twitter:site" content="@Medium"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/938035909fd4"/><meta data-rh="true" property="twitter:description" content="low-latency interactive data exploration"/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fill:584:307/g:fp:0.38:0.39/0*4b5v_0dMG69-V1TE."/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="9 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://netflixtechblog.medium.com"/><link data-rh="true" rel="canonical" href="http://techblog.netflix.com/2014/10/using-presto-in-our-big-data-platform.html"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/938035909fd4"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1200\u002F0*4b5v_0dMG69-V1TE."],"url":"https:\u002F\u002Fnetflixtechblog.com\u002Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4","dateCreated":"2014-10-07T07:00:00.000Z","datePublished":"2014-10-07T07:00:00.000Z","dateModified":"2018-05-25T10:33:03.867Z","headline":"Using Presto in our Big Data Platform on AWS - Netflix TechBlog","name":"Using Presto in our Big Data Platform on AWS - Netflix TechBlog","description":"Seven months ago, we first deployed Presto into production and it is now an integral part of our data ecosystem. In this blog post, we would like to share our experience with Presto.","identifier":"938035909fd4","author":{"@type":"Person","name":"Netflix Technology Blog","url":"https:\u002F\u002Fnetflixtechblog.medium.com"},"creator":["Netflix Technology Blog"],"publisher":{"@type":"Organization","name":"Netflix TechBlog","url":"netflixtechblog.com","logo":{"@type":"ImageObject","width":245,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:490\u002F1*XMfuQcaI93EqrkVcAyVsTw.png"}},"mainEntityOfPage":"https:\u002F\u002Fnetflixtechblog.com\u002Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4"}</script><style type="text/css" data-fela-rehydration="569" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="569" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(137, 131, 132, 1)}.es{border-color:rgba(137, 131, 132, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(137, 131, 132, 1)}.ez:disabled:hover{border-color:rgba(137, 131, 132, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fz{margin:0 24px}.gd{background:rgba(255, 255, 255, 1)}.ge{border:1px solid #F2F2F2}.gf{box-shadow:0 1px 4px #F2F2F2}.gg{max-height:100vh}.gh{overflow-y:auto}.gi{left:0}.gj{top:calc(100vh + 100px)}.gk{bottom:calc(100vh + 100px)}.gl{width:10px}.gm{pointer-events:none}.gn{word-break:break-word}.go{word-wrap:break-word}.gp:after{display:block}.gq:after{content:""}.gr:after{clear:both}.gs{line-height:1.23}.gt{letter-spacing:0}.gu{font-style:normal}.gv{font-weight:700}.ia{align-items:baseline}.ib{width:48px}.ic{height:48px}.id{border:2px solid rgba(255, 255, 255, 1)}.ie{z-index:0}.if{box-shadow:none}.ig{border:1px solid rgba(0, 0, 0, 0.05)}.ih{margin-left:-12px}.ii{width:28px}.ij{height:28px}.ik{z-index:1}.il{width:24px}.im{margin-bottom:2px}.in{flex-wrap:nowrap}.io{font-size:16px}.ip{line-height:24px}.ir{margin:0 8px}.is{display:inline}.it{color:rgba(137, 131, 132, 1)}.iu{fill:rgba(137, 131, 132, 1)}.ix{flex:0 0 auto}.ja{flex-wrap:wrap}.jb{white-space:pre-wrap}.jc{margin-right:4px}.jd{overflow:hidden}.je{max-height:20px}.jf{text-overflow:ellipsis}.jg{display:-webkit-box}.jh{-webkit-line-clamp:1}.ji{-webkit-box-orient:vertical}.jj{word-break:break-all}.jl{padding-left:8px}.jm{padding-right:8px}.kn> *{flex-shrink:0}.ko{overflow-x:scroll}.kp::-webkit-scrollbar{display:none}.kq{scrollbar-width:none}.kr{-ms-overflow-style:none}.ks{width:74px}.kt{flex-direction:row}.ku{z-index:2}.kx{-webkit-user-select:none}.ky{border:0}.kz{fill:rgba(117, 117, 117, 1)}.lc{outline:0}.ld{user-select:none}.le> svg{pointer-events:none}.ln{cursor:progress}.lo{margin-left:4px}.lp{margin-top:0px}.lq{opacity:1}.lr{padding:4px 0}.lu{width:16px}.lw{display:inline-flex}.mc{max-width:100%}.md{padding:8px 2px}.me svg{color:#6B6B6B}.mv{line-height:1.58}.mw{letter-spacing:-0.004em}.mx{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.ns{margin-bottom:-0.46em}.nt{font-style:italic}.nu{text-decoration:underline}.nv{line-height:1.12}.nw{letter-spacing:-0.022em}.nx{font-weight:600}.os{margin-bottom:-0.28em}.oy{margin-left:auto}.oz{margin-right:auto}.pa{max-width:584px}.pg{clear:both}.ph{height:auto}.pi{line-height:1.18}.pw{margin-bottom:-0.31em}.px{max-width:690px}.qd{box-shadow:inset 0 0 0 1px #F2F2F2}.qe{padding:0px}.qf{padding:16px 20px}.qg{flex:1 1 auto}.qi{max-height:40px}.qj{-webkit-line-clamp:2}.qk{margin-top:8px}.ql{margin-top:12px}.qm{width:160px}.qn{background-image:url(https://miro.medium.com/v2/resize:fit:320/1*Ut16jjnHzSSrGaFhB-z92A.png)}.qo{background-origin:border-box}.qp{background-size:cover}.qq{height:167px}.qr{background-position:50% 50%}.qs{background-image:url(https://miro.medium.com/v2/resize:fit:320/1*fkP4F9-AF7vhW7VY0hq43A.png)}.qt{margin-top:32px}.qu{margin-bottom:14px}.qv{padding-top:24px}.qw{padding-bottom:10px}.qx{background-color:#000000}.qy{height:3px}.qz{width:3px}.ra{margin-right:20px}.rb{margin-bottom:26px}.rc{margin-top:6px}.rd{margin-right:8px}.re{padding:8px 16px}.rf{border-radius:100px}.rg{transition:background 300ms ease}.ri{white-space:nowrap}.rj{border-top:none}.rk{margin-bottom:50px}.rl{height:52px}.rm{max-height:52px}.rn{box-sizing:content-box}.ro{position:static}.rq{max-width:155px}.rw{margin-bottom:64px}.rx{margin-bottom:48px}.sl{border-radius:2px}.sn{height:64px}.so{width:64px}.sp{align-self:flex-end}.sq{color:rgba(255, 255, 255, 1)}.sr{fill:rgba(255, 255, 255, 1)}.ss{background:rgba(25, 25, 25, 1)}.st{border-color:rgba(25, 25, 25, 1)}.sw:disabled{opacity:0.1}.sx:disabled:hover{background:rgba(25, 25, 25, 1)}.sy:disabled:hover{border-color:rgba(25, 25, 25, 1)}.te{padding-right:4px}.tf{font-weight:500}.tm{margin-top:16px}.ts{height:0px}.tt{gap:18px}.tu{fill:rgba(61, 61, 61, 1)}.tw{padding-bottom:6px}.tx{border-bottom:1px solid #F2F2F2}.ud{fill:#242424}.ue{background:0}.uf{border-color:#242424}.ug:disabled:hover{color:#242424}.uh:disabled:hover{fill:#242424}.ui:disabled:hover{border-color:#242424}.ut{border-bottom:solid 1px #E5E5E5}.uu{margin-top:72px}.uv{padding:24px 0}.uw{margin-bottom:0px}.ux{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(118, 112, 113, 1)}.eu:hover{border-color:rgba(118, 112, 113, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.iq:hover{text-decoration:underline}.iv:hover:not(:disabled){color:rgba(118, 112, 113, 1)}.iw:hover:not(:disabled){fill:rgba(118, 112, 113, 1)}.lb:hover{fill:rgba(8, 8, 8, 1)}.ls:hover{fill:#000000}.lt:hover p{color:#000000}.lv:hover{color:#000000}.mf:hover svg{color:#000000}.rh:hover{background-color:#F2F2F2}.sm:hover{background-color:none}.su:hover{background:#000000}.sv:hover{border-color:#242424}.tv:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.la:focus{fill:rgba(8, 8, 8, 1)}.mg:focus svg{color:#000000}.lf:active{border-style:none}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fy{margin-bottom:50px}.gc{max-width:680px}.hq{font-size:42px}.hr{margin-top:1.19em}.hs{margin-bottom:32px}.ht{line-height:52px}.hu{letter-spacing:-0.011em}.hz{align-items:center}.jz{border-top:solid 1px #F2F2F2}.ka{border-bottom:solid 1px #F2F2F2}.kb{margin:32px 0 0}.kc{padding:3px 8px}.kl> *{margin-right:24px}.km> :last-child{margin-right:0}.lm{margin-top:0px}.mb{margin:0}.no{font-size:20px}.np{margin-top:2.14em}.nq{line-height:32px}.nr{letter-spacing:-0.003em}.oo{font-size:24px}.op{margin-top:1.95em}.oq{line-height:30px}.or{letter-spacing:-0.016em}.ox{margin-top:0.94em}.pf{margin-top:56px}.pt{margin-top:1.72em}.pu{line-height:24px}.pv{letter-spacing:0}.qc{margin-top:32px}.rv{display:inline-block}.ry{flex-direction:row}.sb{margin-bottom:0}.sc{margin-right:20px}.sz{max-width:500px}.tr{margin-bottom:88px}.uc{margin:40px 0 16px}.un{width:min-width}.us{padding-top:72px}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.ll{margin-top:0px}.ru{display:inline-block}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.lk{margin-top:0px}.rt{display:inline-block}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.li{margin-top:0px}.lj{margin-right:0px}.qh{padding:10px 12px 10px}.rs{display:inline-block}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fu{margin-bottom:2px}.gw{font-size:32px}.gx{margin-top:1.01em}.gy{margin-bottom:24px}.gz{line-height:38px}.ha{letter-spacing:-0.014em}.hv{align-items:flex-start}.iy{flex-direction:column}.jn{margin:24px -24px 0}.jo{padding:0}.kd> *{margin-right:8px}.ke> :last-child{margin-right:24px}.kv{margin-left:0px}.lg{margin-top:0px}.lh{margin-right:0px}.lx{margin:0}.mh{border:1px solid #F2F2F2}.mi{border-radius:99em}.mj{padding:0px 16px 0px 12px}.mk{height:38px}.ml{align-items:center}.mn svg{margin-right:8px}.my{font-size:18px}.mz{margin-top:1.56em}.na{line-height:28px}.nb{letter-spacing:-0.003em}.ny{font-size:20px}.nz{margin-top:1.2em}.oa{line-height:24px}.ob{letter-spacing:0}.ot{margin-top:0.67em}.pb{margin-top:40px}.pj{font-size:16px}.pk{margin-top:1.23em}.py{margin-top:24px}.rr{display:inline-block}.sj{margin-bottom:20px}.sk{margin-right:0}.td{max-width:100%}.tg{font-size:24px}.th{line-height:30px}.ti{letter-spacing:-0.016em}.tn{margin-bottom:64px}.ty{margin:32px 0 16px}.uj{width:100%}.uo{padding-top:48px}.mm:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fx{margin-bottom:50px}.gb{max-width:680px}.hl{font-size:42px}.hm{margin-top:1.19em}.hn{margin-bottom:32px}.ho{line-height:52px}.hp{letter-spacing:-0.011em}.hy{align-items:center}.jv{border-top:solid 1px #F2F2F2}.jw{border-bottom:solid 1px #F2F2F2}.jx{margin:32px 0 0}.jy{padding:3px 8px}.kj> *{margin-right:24px}.kk> :last-child{margin-right:0}.ma{margin:0}.nk{font-size:20px}.nl{margin-top:2.14em}.nm{line-height:32px}.nn{letter-spacing:-0.003em}.ok{font-size:24px}.ol{margin-top:1.95em}.om{line-height:30px}.on{letter-spacing:-0.016em}.ow{margin-top:0.94em}.pe{margin-top:56px}.pq{margin-top:1.72em}.pr{line-height:24px}.ps{letter-spacing:0}.qb{margin-top:32px}.rz{flex-direction:row}.sd{margin-bottom:0}.se{margin-right:20px}.ta{max-width:500px}.tq{margin-bottom:88px}.ub{margin:40px 0 16px}.um{width:min-width}.ur{padding-top:72px}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fw{margin-bottom:50px}.ga{max-width:680px}.hg{font-size:42px}.hh{margin-top:1.19em}.hi{margin-bottom:32px}.hj{line-height:52px}.hk{letter-spacing:-0.011em}.hx{align-items:center}.jr{border-top:solid 1px #F2F2F2}.js{border-bottom:solid 1px #F2F2F2}.jt{margin:32px 0 0}.ju{padding:3px 8px}.kh> *{margin-right:24px}.ki> :last-child{margin-right:0}.lz{margin:0}.ng{font-size:20px}.nh{margin-top:2.14em}.ni{line-height:32px}.nj{letter-spacing:-0.003em}.og{font-size:24px}.oh{margin-top:1.95em}.oi{line-height:30px}.oj{letter-spacing:-0.016em}.ov{margin-top:0.94em}.pd{margin-top:56px}.pn{margin-top:1.72em}.po{line-height:24px}.pp{letter-spacing:0}.qa{margin-top:32px}.sa{flex-direction:row}.sf{margin-bottom:0}.sg{margin-right:20px}.tb{max-width:500px}.tp{margin-bottom:88px}.ua{margin:40px 0 16px}.ul{width:min-width}.uq{padding-top:72px}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fv{margin-bottom:2px}.hb{font-size:32px}.hc{margin-top:1.01em}.hd{margin-bottom:24px}.he{line-height:38px}.hf{letter-spacing:-0.014em}.hw{align-items:flex-start}.iz{flex-direction:column}.jp{margin:24px 0 0}.jq{padding:0}.kf> *{margin-right:8px}.kg> :last-child{margin-right:8px}.kw{margin-left:0px}.ly{margin:0}.mo{border:1px solid #F2F2F2}.mp{border-radius:99em}.mq{padding:0px 16px 0px 12px}.mr{height:38px}.ms{align-items:center}.mu svg{margin-right:8px}.nc{font-size:18px}.nd{margin-top:1.56em}.ne{line-height:28px}.nf{letter-spacing:-0.003em}.oc{font-size:20px}.od{margin-top:1.2em}.oe{line-height:24px}.of{letter-spacing:0}.ou{margin-top:0.67em}.pc{margin-top:40px}.pl{font-size:16px}.pm{margin-top:1.23em}.pz{margin-top:24px}.sh{margin-bottom:20px}.si{margin-right:0}.tc{max-width:100%}.tj{font-size:24px}.tk{line-height:30px}.tl{letter-spacing:-0.016em}.to{margin-bottom:64px}.tz{margin:32px 0 16px}.uk{width:100%}.up{padding-top:48px}.mt:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="print">.rp{display:none}</style><style type="text/css" data-fela-rehydration="569" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.jk{max-height:none}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2F938035909fd4&amp;%7Efeature=LoOpenInAppButton&amp;%7Echannel=ShowPostUnderCollection&amp;source=---top_nav_layout_nav-----------------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" href="https://medium.com/?source=---top_nav_layout_nav-----------------------------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" href="https://medium.com/m/signin?operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fnew-story&amp;source=---top_nav_layout_nav-----------------------new_post_topnav------------------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" href="https://medium.com/search?source=---top_nav_layout_nav-----------------------------------------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;source=post_page---top_nav_layout_nav-----------------------global_nav------------------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div class="fu fv fw fx fy l"><div class="ab cb"><div class="ci bh fz ga gb gc"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gi gj gk gl gm"></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><div><h1 id="c9d8" class="pw-post-title gs gt gu bf gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu bk" data-testid="storyTitle">Using Presto in our Big Data Platform on AWS</h1><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="hv hw hx hy hz ab"><div><div class="ab ia"><div><div class="bm" aria-hidden="false"><a href="https://netflixtechblog.medium.com/?source=post_page---byline--938035909fd4---------------------------------------" rel="noopener follow"><div class="l ib ic by id ie"><div class="l fj"><img alt="Netflix Technology Blog" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="if by l dd de fs n ig ft"></div></div></div></a></div></div><div class="ih ab fj"><div><div class="bm" aria-hidden="false"><a href="https://netflixtechblog.com/?source=post_page---byline--938035909fd4---------------------------------------" rel="noopener ugc nofollow"><div class="l ii ij by id ik"><div class="l fj"><img alt="Netflix TechBlog" class="l fd by br il cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*ty4NvNrGg4ReETxqU2N3Og.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="if by l br il fs n ig ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="im ab q"><div class="ab q in"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b io ip bk"><a class="af ag ah ai aj ak al am an ao ap aq ar iq" data-testid="authorName" href="https://netflixtechblog.medium.com/?source=post_page---byline--938035909fd4---------------------------------------" rel="noopener follow">Netflix Technology Blog</a></p></div></div></div><span class="ir is" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b io ip du"><span><a class="it iu ah ai aj ak al am an ao ap aq ar ex iv iw" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fc3aeaf49d8a4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;user=Netflix+Technology+Blog&amp;userId=c3aeaf49d8a4&amp;source=post_page-c3aeaf49d8a4--byline--938035909fd4---------------------post_header------------------" rel="noopener follow">Follow</a></span></p></div></div></span></div></div><div class="l ix"><span class="bf b bg z du"><div class="ab cn iy iz ja"><div class="fu fv ab"><div class="bf b bg z du ab jb"><span class="jc l ix">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar iq ab q" data-testid="publicationName" href="https://netflixtechblog.com/?source=post_page---byline--938035909fd4---------------------------------------" rel="noopener ugc nofollow"><p class="bf b bg z jd je jf jg jh ji jj jk bk">Netflix TechBlog</p></a></div></div></div><div class="h k"><span class="ir is" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">9 min read</span><div class="jl jm l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Oct 7, 2014</span></div></span></div></span></div></div></div><div class="ab cp jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc"><div class="h k w fg fh q"><div class="ks l"><div class="ab q kt ku"><div class="pw-multi-vote-icon fj jc kv kw kx"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fnetflix-techblog%2F938035909fd4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;user=Netflix+Technology+Blog&amp;userId=c3aeaf49d8a4&amp;source=---header_actions--938035909fd4---------------------clap_footer------------------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="ky ao kz la lb lc am ld le lf kx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lg lh li lj lk ll lm"><p class="bf b dv z du"><span class="ln">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao ky lq lr ab q fk ls lt" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="lp"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b dv z du"><span class="pw-responses-count lo lp">3</span></p></button></div></div></div><div class="ab q kd ke kf kg kh ki kj kk kl km kn ko kp kq kr"><div class="lu k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F938035909fd4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;source=---header_actions--938035909fd4---------------------bookmark_footer------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lv" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd lw cn"><div class="l ae"><div class="ab cb"><div class="lx ly lz ma mb mc ci bh"><div class="ab"><div class="bm" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al md an ao ap ex me mf lt mg mh mi mj mk s ml mm mn mo mp mq mr u ms mt mu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al md an ao ap ex me mf lt mg mh mi mj mk s ml mm mn mo mp mq mr u ms mt mu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><p id="4389" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk"><em class="nt">by Eva Tse, Zhenxiao Luo, Nezih Yigitbasi @ Big Data Platform team</em></p><p id="a758" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">At Netflix, the Big Data Platform team is responsible for building a reliable data analytics platform shared across the whole company. In general, Netflix product decisions are very data driven. So we play a big role in helping different teams to gain product and consumer insights from a multi-petabyte scale data warehouse (DW). Their use cases range from analyzing A/B tests results to analyzing user streaming experience to training data models for our recommendation algorithms.<br/> <br/>We shared our overall architecture in a <a class="af nu" href="https://medium.com/@Netflix_Techblog/hadoop-platform-as-a-service-in-the-cloud-c23f35f965e7" rel="noopener">previous blog post</a>. The underpinning of our big data platform is that we leverage AWS S3 for our DW. This architecture allows us to separate compute and storage layers. It allows multiple clusters to share the same data on S3 and clusters can be long-running and yet transient (for flexibility). Our users typically write Pig or Hive jobs for ETL and data analytics.</p><p id="b6e9" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">A small subset of the ETL output and some aggregated data is transferred to Teradata for interactive querying and reporting. On the other hand, we also have the need to do low latency interactive data exploration on our broader data set on S3. These are the use cases that <a class="af nu" href="http://prestodb.io/" rel="noopener ugc nofollow" target="_blank">Presto</a> serves exceptionally well. Seven months ago, we first deployed Presto into production and it is now an integral part of our data ecosystem. In this blog post, we would like to share our experience with Presto and how we made it work for us!</p><h1 id="ac5b" class="nv nw gu bf nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os bk">Why Presto?</h1><p id="308f" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">We had been in search of an interactive querying engine that could work well for us. Ideally, we wanted an open source project that could handle our scale of data &amp; processing needs, had great momentum, was well integrated with the Hive metastore, and was easy for us to integrate with our DW on S3. We were delighted when Facebook open sourced Presto.</p><p id="00c4" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">In terms of scale, we have a 10 petabyte data warehouse on S3. Our users from different organizations query diverse data sets across expansive date ranges. For this use case, caching a specific dataset in memory would not work because cache hit rate would be extremely low unless we have an unreasonably large cache. The streaming DAG execution architecture of Presto is well-suited for this sporadic data exploration usage pattern.</p><p id="e3a8" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">In terms of integrating with our big data platform, Presto has a connector architecture that is Hadoop friendly. It allows us to easily plug in an S3 file system. We were up and running in test mode after only a month of work on the S3 file system connector in collaboration with Facebook.</p><p id="0b09" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">In terms of usability, Presto supports ANSI SQL, which has made it very easy for our analysts and developers to get rolling with it. As far as limitations / drawbacks, user-defined functions in Presto are more involved to develop, build, and deploy as compared to Hive and Pig. Also, for users who want to productionize their queries, they need to rewrite them in HiveQL or Pig Latin, as we don’t currently use Presto in our critical production pipelines. While there are some minor inconveniences, the benefits of being able to interactively analyze large amounts of data is a huge win for us.</p><p id="3842" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Finally, Presto was already running in production at Facebook. We did some performance benchmarking and stress testing and we were impressed. We also looked under the hood and saw well designed and documented Java code. We were convinced!</p><h1 id="b421" class="nv nw gu bf nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os bk">Our production environment and use cases</h1><p id="51d2" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">Currently, we are running with ~250 m2.4xlarge EC2 worker instances and our coordinator is on r3.4xlarge. Our users run ~2500 queries/workday. Our Presto cluster is completely isolated from our Hadoop clusters, though they all access the same data on our S3 DW.</p><p id="62b3" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Almost all of our jobs are CPU bound. We set our task memory to a rather high value (i.e., 7GB, with a slight chance in oversubscribing memory) to run some of our memory intensive queries, like big joins or aggregation queries.</p><p id="186f" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">We do not use disk (as we don’t use HDFS) in the cluster. Hence, we will be looking to upgrade to the current generation AWS instance type (e.g. r3), which has more memory, and has better isolation and performance than the previous generation of EC2 instances.</p><p id="60ec" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">We are running the latest Presto 0.76 release with some outstanding pull requests that are not committed yet. Ideally, we would like to contribute everything back to open source and not carry custom patches in our deployment. We are actively working with Facebook and looking forward to committing all of our pull requests.</p><p id="56f9" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Presto addresses our ad hoc interactive use cases. Our users always go to Presto first for quick answers and for data exploration. If Presto does not support what they need (like big join / aggregation queries that exceed our memory limit or some specific user-defined functions that are not available), then they would go back to Hive or Pig.</p><p id="bd40" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">We are working on a Presto user interface for our internal big data portal. Our algorithm team also built an interactive data clustering application by integrating R with Presto via an open source Python Presto client.</p><h1 id="8b0a" class="nv nw gu bf nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os bk">Performance benchmark</h1><figure class="pb pc pd pe pf pg oy oz paragraph-image"><div class="oy oz pa"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*4b5v_0dMG69-V1TE. 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*4b5v_0dMG69-V1TE. 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*4b5v_0dMG69-V1TE. 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*4b5v_0dMG69-V1TE. 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*4b5v_0dMG69-V1TE. 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*4b5v_0dMG69-V1TE. 1100w, https://miro.medium.com/v2/resize:fit:1168/format:webp/0*4b5v_0dMG69-V1TE. 1168w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 584px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*4b5v_0dMG69-V1TE. 640w, https://miro.medium.com/v2/resize:fit:720/0*4b5v_0dMG69-V1TE. 720w, https://miro.medium.com/v2/resize:fit:750/0*4b5v_0dMG69-V1TE. 750w, https://miro.medium.com/v2/resize:fit:786/0*4b5v_0dMG69-V1TE. 786w, https://miro.medium.com/v2/resize:fit:828/0*4b5v_0dMG69-V1TE. 828w, https://miro.medium.com/v2/resize:fit:1100/0*4b5v_0dMG69-V1TE. 1100w, https://miro.medium.com/v2/resize:fit:1168/0*4b5v_0dMG69-V1TE. 1168w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 584px"/><img alt="" class="bh mc ph c" width="584" height="346" loading="lazy" role="presentation"/></picture></div></figure><p id="32a0" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">At a high level, we compare Presto and Hive query execution time using our own datasets and users’ queries instead of running standard benchmarks like TPC-H or TPC-DS. This way, we can translate the results back to what we can expect for our use cases. The graph below shows the results of three queries: a group-by query, a join plus a group-by query, and a needle-in-a-haystack (table scan) query. We compared the performance of Presto vs. Hive 0.11 on Hadoop 2 using Parquet input files on S3, all of which we currently use in production. Each query processed the same data set with varying data sizes between ~140GB to ~210GB depending on the file format.</p><h2 id="2bb9" class="pi nw gu bf nx pj pk dy ob pl pm ea of ng pn po pp nk pq pr ps no pt pu pv pw bk">Cluster setup:</h2><p id="2ae3" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">40 nodes m2.4xlarge</p><h2 id="db98" class="pi nw gu bf nx pj pk dy ob pl pm ea of ng pn po pp nk pq pr ps no pt pu pv pw bk">Settings we tuned:</h2><p id="b50b" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">task.shard.max-threads=32<br/>task.max-memory=7GB<br/>sink.max-buffer-size=1GB<br/>hive.s3.max-client-retries=50<br/>hive.s3.max-error-retries=50<br/>hive.s3.max-connections=500<br/>hive.s3.connect-timeout=5m<br/>hive.s3.socket-timeout=5m</p><p id="2301" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">We understand performance test environments and numbers are hard to reproduce. What is worth noting is the relative performance of these tests. The key takeaway is that queries that take one or two map-reduce (MR) phases in Hadoop run 10 to 100 times faster in Presto. The speedup in Presto is linear to the number of MR jobs involved. For jobs that only do a table scan (i.e., I/O bound instead of CPU bound), it is highly dependent on the read performance of the file format used. We did some work on Presto / Parquet integration, which we will cover in the next section.</p><h1 id="146a" class="nv nw gu bf nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os bk">Our Presto contributions</h1><p id="39d7" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">The primary and initial piece of work that made Presto work for us was <a class="af nu" href="https://github.com/facebook/presto/pull/991" rel="noopener ugc nofollow" target="_blank">S3 FileSystem</a> integration. In addition, we also worked on optimizing <a class="af nu" href="https://github.com/facebook/presto/pull/1532" rel="noopener ugc nofollow" target="_blank">S3 multipart upload</a>. We also made a few enhancements and bug fixes based on our use cases along the way: <a class="af nu" href="https://github.com/facebook/presto/pull/1300" rel="noopener ugc nofollow" target="_blank">disabling recursive directory listing</a>, <a class="af nu" href="https://github.com/facebook/presto/pull/1724" rel="noopener ugc nofollow" target="_blank">json tuple generation</a>, <a class="af nu" href="https://github.com/facebook/presto/pull/1744" rel="noopener ugc nofollow" target="_blank">foreground metastore refresh</a>, <a class="af nu" href="https://github.com/facebook/presto/pull/1571" rel="noopener ugc nofollow" target="_blank">mbean for S3 filesystem monitoring</a>, and <a class="af nu" href="https://github.com/facebook/presto/pull/1478" rel="noopener ugc nofollow" target="_blank">handling S3 client socket timeout</a>.</p><p id="9310" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">In general, we are committed to make Presto work better for our users and to cover more of their needs. Here are a few big enhancements that we are currently working on:</p><h2 id="a234" class="pi nw gu bf nx pj pk dy ob pl pm ea of ng pn po pp nk pq pr ps no pt pu pv pw bk">Parquet file format support</h2><p id="84d7" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">We recently upgraded our DW to use the Parquet file format (FF) for its performance on S3 and for its flexibility to integrate with different data processing engines. Hence, we are committed to make Presto work better with Parquet FF. (For details on why we chose Parquet and what we contributed to make it work in our environment, stay tuned for an upcoming blog post).</p><p id="fbfb" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Developing based on Facebook’s <a class="af nu" href="https://github.com/facebook/presto/pull/1541" rel="noopener ugc nofollow" target="_blank">initial Parquet integration</a>, we <a class="af nu" href="https://github.com/facebook/presto/pull/1709" rel="noopener ugc nofollow" target="_blank">added support</a> for predicate pushdown, column position based access (instead of name based access) to Parquet columns, and data type coercion. For context, we use the Hive metastore as our source of truth for metadata, and we do schema evolution on the Hive metastore. Hence, we need column position based access to work with our Hive metastore instead of using the schema information stored in Parquet files.</p><p id="7740" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Here is a comparison of Presto job execution times among different FFs. We compare read performance of sequence file (a FF we have historically used), <a class="af nu" href="https://github.com/facebook/presto/pull/1541" rel="noopener ugc nofollow" target="_blank">ORCFile</a> (we benchmarked the latest integration with predicate pushdown, vectorization and lazy materialization on read) and Parquet. We also compare the performance on S3 vs. HDFS. In this test, we use the same data sets and environment as the above benchmark test. The query is a needle-in-a-haystack query that does a select and filter on a condition that returns zero rows.</p><figure class="pb pc pd pe pf pg oy oz paragraph-image"><div class="oy oz px"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*ylMkKWHRWMzyxDvW. 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*ylMkKWHRWMzyxDvW. 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*ylMkKWHRWMzyxDvW. 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*ylMkKWHRWMzyxDvW. 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*ylMkKWHRWMzyxDvW. 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*ylMkKWHRWMzyxDvW. 1100w, https://miro.medium.com/v2/resize:fit:1380/format:webp/0*ylMkKWHRWMzyxDvW. 1380w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 690px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*ylMkKWHRWMzyxDvW. 640w, https://miro.medium.com/v2/resize:fit:720/0*ylMkKWHRWMzyxDvW. 720w, https://miro.medium.com/v2/resize:fit:750/0*ylMkKWHRWMzyxDvW. 750w, https://miro.medium.com/v2/resize:fit:786/0*ylMkKWHRWMzyxDvW. 786w, https://miro.medium.com/v2/resize:fit:828/0*ylMkKWHRWMzyxDvW. 828w, https://miro.medium.com/v2/resize:fit:1100/0*ylMkKWHRWMzyxDvW. 1100w, https://miro.medium.com/v2/resize:fit:1380/0*ylMkKWHRWMzyxDvW. 1380w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 690px"/><img alt="" class="bh mc ph c" width="690" height="369" loading="lazy" role="presentation"/></picture></div></figure><p id="8113" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">As next step, we will look into improving Parquet performance further by doing predicate pushdown to eliminate whole row groups, vectorization and lazy materialization on read. We believe this will make Parquet performance on par with ORC files.</p><h2 id="c42a" class="pi nw gu bf nx pj pk dy ob pl pm ea of ng pn po pp nk pq pr ps no pt pu pv pw bk">ODBC / JDBC support</h2><p id="f3c0" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">This is one of the biggest asks from our users. Users like to connect to our Hive DW directly to do exploratory / ad hoc reporting because it has the full dataset. Given Presto is interactive and integrated with Hive metastore, it is a natural fit.</p><p id="3de9" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Presto has a native ODBC driver that was recently open sourced. We made a <a class="af nu" href="https://github.com/prestodb/presto-odbc/pulls?q=is%3Apr+author%3Anezihyigitbasi" rel="noopener ugc nofollow" target="_blank">few bug fixes and we are working on more enhancements</a>. Overall, it is working well now for our Tableau users in extract (non-live exploration) mode. For our users who prefer to use Microstrategy, we plan to explore different options to integrate with it next.</p><h2 id="6c35" class="pi nw gu bf nx pj pk dy ob pl pm ea of ng pn po pp nk pq pr ps no pt pu pv pw bk">Map data type support</h2><p id="d0d9" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">All the event data generated from our Netflix services and Netflix-enabled devices comes through our <a class="af nu" href="https://medium.com/@Netflix_Techblog/announcing-suro-backbone-of-netflixs-data-pipeline-5c660ca917b6" rel="noopener">Suro</a> pipeline before landing in our DW. For flexibility, this event data is structured as key/value pairs, which get automatically stored in map columns in our DW. Users may pull out keys as a top level columns in the Hive metastore by adjusting some configurations in our data pipeline. Still, a large number of key/value pairs remain in the map because there are a large number of keys and the key space is very sparse.</p><p id="d01d" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">It is very common for users to lookup a specific key from the map. With our current Parquet integration, looking up a key from the map column means converting the column to JSON string first then parsing it. Facebook recently added native support for <a class="af nu" href="https://github.com/facebook/presto/pull/1687" rel="noopener ugc nofollow" target="_blank">array and map data types</a>. We plan to further enhance it to support array element or map key specific column pruning and predicate pushdown for Parquet FF to improve performance.</p><h2 id="4349" class="pi nw gu bf nx pj pk dy ob pl pm ea of ng pn po pp nk pq pr ps no pt pu pv pw bk">Our wishlist</h2><p id="59cc" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">There are still a couple of items that are high on our wishlist and we would love to contribute on these when we have the bandwidth.</p><p id="1166" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk"><strong class="mx gv">Big table join</strong>. It is very common for our queries to join tables as we have a lot of normalized data in our DW. We are excited to see that <a class="af nu" href="https://github.com/facebook/presto/pull/1683" rel="noopener ugc nofollow" target="_blank">distributed hash join</a> is now supported and plan to check it out. Sort-merge join would likely be useful to solve some of the even bigger join use cases that we have.</p><p id="5162" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk"><strong class="mx gv">Graceful shrink</strong>. Given Presto is used for our ad hoc use cases, and given we run it in the cloud, it would be most efficient if we could scale up the cluster during peak hours (mostly work hours) and scale down during trough hours (night time or weekends). If Presto nodes can be blacklisted and gracefully drained before shutdown, we could combine that with available JMX metrics to do heuristic-based auto expand/shrink of the cluster.</p><h1 id="c17a" class="nv nw gu bf nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os bk">Key takeaway</h1><p id="a2e4" class="pw-post-body-paragraph mv mw gu mx b my ot na nb nc ou ne nf ng ov ni nj nk ow nm nn no ox nq nr ns gn bk">Presto makes the lives of our users a lot easier. It tremendously improves their productivity.</p><p id="6562" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">We have learned from our experience that getting involved and contributing back to open source technologies is the best way to make sure it works for our use cases in a fast paced and evolving environment. We have been working closely with the Facebook team to discuss our use cases and align priorities. They have been open about their roadmap, quick in adding new features, and helpful in providing feedback to our contributions. We look forward to continuing to work with them and the community to make Presto even better and more comprehensive. Let us know if you are interested in sharing your experiences using Presto.</p><p id="fac7" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">Last but not least, the Big Data Platform team at Netflix has been heads-down innovating on our platform to meet our growing business needs. We will share more of our experiences with our Parquet FF migration and Genie 2 upgrade in upcoming blog posts.</p><p id="1770" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk">If you are interested in solving big data problems like ours, we would like to hear from you!</p><h1 id="9c95" class="nv nw gu bf nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os bk">See Also:</h1><div class="py pz qa qb qc qd"><a href="https://medium.com/@Netflix_Techblog/hadoop-platform-as-a-service-in-the-cloud-c23f35f965e7?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow" target="_blank"><div class="qe ab ix"><div class="qf ab co cb qg qh"><h2 class="bf gv io z jd qi jf jg qj ji jk gt bk">Hadoop Platform as a Service in the Cloud</h2><div class="qk l"><h3 class="bf b io z jd qi jf jg qj ji jk du">a data warehouse of practically infinite scale</h3></div><div class="ql l"><p class="bf b dv z jd qi jf jg qj ji jk du">medium.com</p></div></div><div class="qm l"><div class="qn l qo qp qq qm qr mc qd"></div></div></div></a></div><div class="py pz qa qb qc qd"><a href="https://medium.com/@Netflix_Techblog/announcing-suro-backbone-of-netflixs-data-pipeline-5c660ca917b6?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow" target="_blank"><div class="qe ab ix"><div class="qf ab co cb qg qh"><h2 class="bf gv io z jd qi jf jg qj ji jk gt bk">Announcing Suro</h2><div class="qk l"><h3 class="bf b io z jd qi jf jg qj ji jk du">Backbone of Netflix’s Data Pipeline</h3></div><div class="ql l"><p class="bf b dv z jd qi jf jg qj ji jk du">medium.com</p></div></div><div class="qm l"><div class="qs l qo qp qq qm qr mc qd"></div></div></div></a></div></div></div></div><div class="ab cb qt qu qv qw" role="separator"><span class="qx by bm qy qz ra"></span><span class="qx by bm qy qz ra"></span><span class="qx by bm qy qz"></span></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><p id="56cd" class="pw-post-body-paragraph mv mw gu mx b my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns gn bk"><em class="nt">Originally published at </em><a class="af nu" href="http://techblog.netflix.com/2014/10/using-presto-in-our-big-data-platform.html" rel="noopener ugc nofollow" target="_blank"><em class="nt">techblog.netflix.com</em></a><em class="nt"> on October 7, 2014.</em></p></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="rb rc ab ja"><div class="qk ab"><a class="rd ay am ao" href="https://medium.com/tag/big-data?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Big Data</div></a></div><div class="qk ab"><a class="rd ay am ao" href="https://medium.com/tag/aws?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">AWS</div></a></div><div class="qk ab"><a class="rd ay am ao" href="https://medium.com/tag/hadoop?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Hadoop</div></a></div><div class="qk ab"><a class="rd ay am ao" href="https://medium.com/tag/hive?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Hive</div></a></div><div class="qk ab"><a class="rd ay am ao" href="https://medium.com/tag/open-source?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Open Source</div></a></div></div></div></div><div class="l"></div><footer class="rj rk rl rm rn ab q ro ik c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp rp"><div class="ab q kt"><div class="rq l"><span class="l rr rs rt e d"><div class="ab q kt ku"><div class="pw-multi-vote-icon fj jc kv kw kx"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fnetflix-techblog%2F938035909fd4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;user=Netflix+Technology+Blog&amp;userId=c3aeaf49d8a4&amp;source=---footer_actions--938035909fd4---------------------clap_footer------------------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="ky ao kz la lb lc am ld le lf kx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lg lh li lj lk ll lm"><p class="bf b dv z du"><span class="ln">--</span></p></div></div></span><span class="l h g f ru rv"><div class="ab q kt ku"><div class="pw-multi-vote-icon fj jc kv kw kx"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fnetflix-techblog%2F938035909fd4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;user=Netflix+Technology+Blog&amp;userId=c3aeaf49d8a4&amp;source=---footer_actions--938035909fd4---------------------clap_footer------------------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="ky ao kz la lb lc am ld le lf kx"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lg lh li lj lk ll lm"><p class="bf b dv z du"><span class="ln">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao ky lq lr ab q fk ls lt" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="lp"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b bg z du"><span class="pw-responses-count lo lp">3</span></p></button></div></div></div></div><div class="ab q"><div class="ra l ix"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F938035909fd4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;source=---footer_actions--938035909fd4---------------------bookmark_footer------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lv" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="ra l ix"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al md an ao ap ex me mf lt mg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="rw l"><div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="rx l"><div class="ab ry rz sa iz iy"><div class="sb sc sd se sf sg sh si sj sk ab cp"><div class="h k"><a href="https://netflixtechblog.com/?source=post_page---post_publication_info--938035909fd4---------------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Netflix TechBlog" class="sl ib ic cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*ty4NvNrGg4ReETxqU2N3Og.png" width="48" height="48" loading="lazy"/><div class="sl l ic ib fs n fr sm"></div></div></a></div><div class="j i d"><a href="https://netflixtechblog.com/?source=post_page---post_publication_info--938035909fd4---------------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Netflix TechBlog" class="sl so sn cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*ty4NvNrGg4ReETxqU2N3Og.png" width="64" height="64" loading="lazy"/><div class="sl l sn so fs n fr sm"></div></div></a></div><div class="j i d sp ix"><div class="ab"><span><a class="bf b bg z sq re sr ss st su sv ev ew sw sx sy fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fnetflix-techblog&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;collection=Netflix+TechBlog&amp;collectionId=2615bd06b42e&amp;source=post_page---post_publication_info--938035909fd4---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co qg"><div class="sz ta tb tc td l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://netflixtechblog.com/?source=post_page---post_publication_info--938035909fd4---------------------------------------" rel="noopener follow"><h2 class="pw-author-name bf tf tg th ti tj tk tl ng po pp nk pr ps no pu pv bk"><span class="gn te">Published in <!-- -->Netflix TechBlog</span></h2></a><div class="qk ab ia"><div class="l ix"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar iq" rel="noopener follow" href="/followers?source=post_page---post_publication_info--938035909fd4---------------------------------------">159K Followers</a></span></div><div class="bf b bg z du ab jb"><span class="ir l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar iq" rel="noopener follow" href="/introducing-impressions-at-netflix-e2b67c88c9fb?source=post_page---post_publication_info--938035909fd4---------------------------------------">Last published <!-- -->2 days ago</a></div></div><div class="tm l"><p class="bf b bg z bk"><span class="gn">Learn about Netflix’s world class engineering efforts, company culture, product developments and more.</span></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z sq re sr ss st su sv ev ew sw sx sy fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Fnetflix-techblog&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;collection=Netflix+TechBlog&amp;collectionId=2615bd06b42e&amp;source=post_page---post_publication_info--938035909fd4---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div></div><div class="ab ry rz sa iz iy"><div class="sb sc sd se sf sg sh si sj sk ab cp"><div class="h k"><a tabindex="0" href="https://netflixtechblog.medium.com/?source=post_page---post_author_info--938035909fd4---------------------------------------" rel="noopener follow"><div class="l fj"><img alt="Netflix Technology Blog" class="l fd by ic ib cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" width="48" height="48" loading="lazy"/><div class="fr by l ic ib fs n ay sm"></div></div></a></div><div class="j i d"><a tabindex="0" href="https://netflixtechblog.medium.com/?source=post_page---post_author_info--938035909fd4---------------------------------------" rel="noopener follow"><div class="l fj"><img alt="Netflix Technology Blog" class="l fd by sn so cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" width="64" height="64" loading="lazy"/><div class="fr by l sn so fs n ay sm"></div></div></a></div><div class="j i d sp ix"><div class="ab"><span><a class="bf b bg z sq re sr ss st su sv ev ew sw sx sy fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fc3aeaf49d8a4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;user=Netflix+Technology+Blog&amp;userId=c3aeaf49d8a4&amp;source=post_page-c3aeaf49d8a4--post_author_info--938035909fd4---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co qg"><div class="sz ta tb tc td l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://netflixtechblog.medium.com/?source=post_page---post_author_info--938035909fd4---------------------------------------" rel="noopener follow"><h2 class="pw-author-name bf tf tg th ti tj tk tl ng po pp nk pr ps no pu pv bk"><span class="gn te">Written by <!-- -->Netflix Technology Blog</span></h2></a><div class="qk ab ia"><div class="l ix"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar iq" href="https://netflixtechblog.medium.com/followers?source=post_page---post_author_info--938035909fd4---------------------------------------" rel="noopener follow">432K Followers</a></span></div><div class="bf b bg z du ab jb"><span class="ir l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar iq" href="https://medium.com/@netflixtechblog/following?source=post_page---post_author_info--938035909fd4---------------------------------------" rel="noopener follow">10 Following</a></div></div><div class="tm l"><p class="bf b bg z bk"><span class="gn">Learn more about how Netflix designs, builds, and operates our systems and engineering organizations</span></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z sq re sr ss st su sv ev ew sw sx sy fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fc3aeaf49d8a4&amp;operation=register&amp;redirect=https%3A%2F%2Fnetflixtechblog.com%2Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4&amp;user=Netflix+Technology+Blog&amp;userId=c3aeaf49d8a4&amp;source=post_page-c3aeaf49d8a4--post_author_info--938035909fd4---------------------follow_profile------------------" rel="noopener follow">Follow</a></span></div></div></div></div></div></div></div><div class="tn to tp tq tr l"><div class="ts bh r rw"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf tf ny oa ob oc oe of og oi oj ok om on oo oq or bk">Responses (<!-- -->3<!-- -->)</h2><div class="ab tt"><div><div class="bm" aria-hidden="false"><a class="tu tv" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--938035909fd4---------------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div><div class="tw tx ty tz ua ub uc l"></div><div class="qt l"><button class="bf b bg z bk re ud ue uf lv ls sv ev ew ex ug uh ui fa uj uk ul um un fb fc fd bm fe ff">See all responses</button></div></div></div></div><div class="uo up uq ur us l bx"><div class="h k j"><div class="ts bh ut uu"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="uv ab kt ja"><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/about?autoplay=1&amp;source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">About</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Careers</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="mailto:pressinquiries@medium.com" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="uw ux l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="uw l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/business?source=post_page-----938035909fd4---------------------------------------" rel="noopener follow"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20250217-152844-ca206ec2ba"</script><script>window.__GRAPHQL_URI__ = "https://netflixtechblog.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"This request is not using the cache middleware worker","group":"disabled","tags":["group-edgeCachePosts","post-938035909fd4","user-c3aeaf49d8a4","collection-2615bd06b42e"],"serverVariantState":"","middlewareEnabled":false,"cacheStatus":"DYNAMIC","shouldUseCache":false,"vary":[],"pubFeaturingPostPageLabelEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"COLLECTION","id":"2615bd06b42e","explicit":true},"viewerIsBot":false},"debug":{"requestId":"0bf9633c-c57f-4eb3-968a-f8e31870dfeb","requestTag":"","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-5aa087eef63fef85d29eb4875333d119-59c4e4fa1f1bcc72-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fnetflixtechblog.com\u002Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4","host":"netflixtechblog.com","hostname":"netflixtechblog.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null}},"config":{"nodeEnv":"production","version":"main-20250217-152844-ca206ec2ba","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20250217-152844-ca206ec2ba","commit":"ca206ec2ba708507b1bef4ec007a67163085196c"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"variantFlags":[{"__typename":"VariantFlag","name":"enable_tipping_v0_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"can_send_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_group_gifting","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_footer_app_buttons","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_plans_page_branding_v2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"ios_enable_verified_book_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_paywall_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_aurora_pub_follower_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_creator_welcome_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"textshots_userid","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_update_topic_portals_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_widget","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tag_recs","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signin_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_premium_tier_badge","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_client","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_app_flirty_thirty","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_validate_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_simplified_digest_v2_b","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_monthly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"android_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_archive_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_new_push_notification_endpoint","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_plan","valueType":{"__typename":"VariantFlagString","value":"60e220181034"}},{"__typename":"VariantFlag","name":"available_monthly_premium_plan","valueType":{"__typename":"VariantFlagString","value":"12a660186432"}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_programming","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_diversification_rex","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_native","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_publish_permission_check","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_image_sharer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"disable_partner_program_enrollment","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_social_share_sheet","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"onboarding_tags_from_top_views","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_syntax_highlight","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_paypal","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_marketing_emails","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_deprecate_legacy_providers_v3","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_test_auth","valueType":{"__typename":"VariantFlagString","value":"disallow"}},{"__typename":"VariantFlag","name":"enable_legacy_feed_in_iceland","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pre_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recommended_publishers_query","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_remove_twitter_onboarding_step","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_avatar_upload","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tribute_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reader_fair_distribution_non_qp","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cancellation_discount_v1_1","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pub_featuring_post_page_label","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_experiment","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_hybrid_ranking_model","valueType":{"__typename":"VariantFlagString","value":"experiment"}},{"__typename":"VariantFlag","name":"enable_medium_com_canonical_urls","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pill_based_home_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_explore_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_iceland_forced_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_winback_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"coronavirus_topic_recirc","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_branch_io","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_first_story","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_miro_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_easy_resubscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_medium2_kbfd","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_reading_history","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rito_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_starspace","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_custom_moc_preview_for_google_referrer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"num_post_bottom_responses_to_show","valueType":{"__typename":"VariantFlagNumber","value":3}},{"__typename":"VariantFlag","name":"android_enable_editor_new_publishing_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_model_v2","valueType":{"__typename":"VariantFlagString","value":"group_2"}},{"__typename":"VariantFlag","name":"enable_lite_server_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_manage_membership_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"mobile_custom_app_icon","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_automod","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_topic_portals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards_byline","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"goliath_externalsearch_enable_comment_deindexation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_in_app_free_trial","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_intrinsic_automatic_actions","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_iceland_nux","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_yearly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"redefined_top_posts","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_cart_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_all_recs_surfaces","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_integration","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_configure_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_deviant_get_variant_flag_from_medium2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_newsletter_lo_flow_custom_domains","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_paywall_email_experiment","valueType":{"__typename":"VariantFlagString","value":"experiment"}},{"__typename":"VariantFlag","name":"enable_plans_page_payment_form","valueType":{"__typename":"VariantFlagString","value":"group_1"}},{"__typename":"VariantFlag","name":"ios_enable_lock_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reengagement_notification_duration","valueType":{"__typename":"VariantFlagNumber","value":3}},{"__typename":"VariantFlag","name":"get_highlights_from_engagement","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"rex_generator_max_candidates","valueType":{"__typename":"VariantFlagNumber","value":1000}},{"__typename":"VariantFlag","name":"signup_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_apple_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ranker_v10","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_susi_redesign_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cleansweep_shadow_cache","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_eventstats_event_processing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_response_markup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"skip_fs_cache_user_vals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_entities_to_follow_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_display_paywall_after_onboarding","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"browsable_stream_config_bucket","valueType":{"__typename":"VariantFlagString","value":"curated-topics"}},{"__typename":"VariantFlag","name":"enable_members_only_audio","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lo_homepage","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_recaptcha_enterprise","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_aspirational_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_signup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_engagement_service_publish_response","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ml_rank_rex_anno","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_lists_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"can_receive_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_aspiriational","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_sign_in","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_stripe_customers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recirc_model","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_nia_v01","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_verifications_service","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bg_post_post","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_autorefresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"glyph_font_set","valueType":{"__typename":"VariantFlagString","value":"m2-unbound-source-serif-pro"}},{"__typename":"VariantFlag","name":"android_two_hour_refresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_auto_follow_on_subscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pub_featuring","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_input","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_create_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_switch_plan_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_user_follows","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_trial_membership","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_seamless_social_sharing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_home_post_menu","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_apple_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_google_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_ranker_v2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_see_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tick_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_programming_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_country_expansion","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_verified_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pub_featuring_stats","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_updated_pub_recs_ui","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_post_referrers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_one_tap","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_maim_the_meter","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members_username_selection","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_c","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_annual_plan","valueType":{"__typename":"VariantFlagString","value":"2c754bcc2995"}},{"__typename":"VariantFlag","name":"enable_lite_continue_this_thread","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_homepage","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sprig","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cancellation_discount_v1_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_access","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_rating_prompt_stories_read_threshold","valueType":{"__typename":"VariantFlagNumber","value":2}},{"__typename":"VariantFlag","name":"enable_rex_aggregator_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_import","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cache_less_following_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_annual_premium_plan","valueType":{"__typename":"VariantFlagString","value":"4a442ace1476"}},{"__typename":"VariantFlag","name":"enable_trust_service_recaptcha","valueType":{"__typename":"VariantFlagBoolean","value":true}}],"collectionByDomainOrSlug({\"domainOrSlug\":\"netflixtechblog.com\"})":{"__ref":"Collection:2615bd06b42e"},"postResult({\"id\":\"938035909fd4\"})":{"__ref":"Post:938035909fd4"}},"ImageMetadata:":{"__typename":"ImageMetadata","id":""},"Collection:2615bd06b42e":{"__typename":"Collection","id":"2615bd06b42e","favicon":{"__ref":"ImageMetadata:"},"customStyleSheet":null,"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFF6F1F1","point":0},{"__typename":"ColorPoint","color":"#FFF4EFEF","point":0.1},{"__typename":"ColorPoint","color":"#FFF2EDED","point":0.2},{"__typename":"ColorPoint","color":"#FFF1EBEC","point":0.3},{"__typename":"ColorPoint","color":"#FFEFE9EA","point":0.4},{"__typename":"ColorPoint","color":"#FFEDE8E8","point":0.5},{"__typename":"ColorPoint","color":"#FFECE6E6","point":0.6},{"__typename":"ColorPoint","color":"#FFEAE4E4","point":0.7},{"__typename":"ColorPoint","color":"#FFE8E2E2","point":0.8},{"__typename":"ColorPoint","color":"#FFE6E0E0","point":0.9},{"__typename":"ColorPoint","color":"#FFE5DEDE","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF898384","point":0},{"__typename":"ColorPoint","color":"#FF7F797A","point":0.1},{"__typename":"ColorPoint","color":"#FF767071","point":0.2},{"__typename":"ColorPoint","color":"#FF6C6768","point":0.3},{"__typename":"ColorPoint","color":"#FF615D5E","point":0.4},{"__typename":"ColorPoint","color":"#FF575354","point":0.5},{"__typename":"ColorPoint","color":"#FF4C4949","point":0.6},{"__typename":"ColorPoint","color":"#FF413E3E","point":0.7},{"__typename":"ColorPoint","color":"#FF353333","point":0.8},{"__typename":"ColorPoint","color":"#FF282727","point":0.9},{"__typename":"ColorPoint","color":"#FF1B1A1A","point":1}]},"tintBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FF221E1F","colorPoints":[{"__typename":"ColorPoint","color":"#FF221E1F","point":0},{"__typename":"ColorPoint","color":"#FF403B3C","point":0.1},{"__typename":"ColorPoint","color":"#FF5A5556","point":0.2},{"__typename":"ColorPoint","color":"#FF726D6E","point":0.3},{"__typename":"ColorPoint","color":"#FF898485","point":0.4},{"__typename":"ColorPoint","color":"#FF9F9A9A","point":0.5},{"__typename":"ColorPoint","color":"#FFB4AFAF","point":0.6},{"__typename":"ColorPoint","color":"#FFC8C3C3","point":0.7},{"__typename":"ColorPoint","color":"#FFDBD7D7","point":0.8},{"__typename":"ColorPoint","color":"#FFEEEAEA","point":0.9},{"__typename":"ColorPoint","color":"#FFFFFDFD","point":1}]}},"domain":"netflixtechblog.com","slug":"netflix-techblog","googleAnalyticsId":"UA-156554426-1","name":"Netflix TechBlog","avatar":{"__ref":"ImageMetadata:1*ty4NvNrGg4ReETxqU2N3Og.png"},"description":"Learn about Netflix’s world class engineering efforts, company culture, product developments and more.","subscriberCount":159185,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:e2b67c88c9fb"}]},"isAuroraVisible":false,"tintColor":"#FF221E1F","newsletterV3":null,"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:2615bd06b42e-viewerId:lo_66362cd610d5"},"twitterUsername":null,"facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*XMfuQcaI93EqrkVcAyVsTw.png"}},"ImageMetadata:1*ty4NvNrGg4ReETxqU2N3Og.png":{"__typename":"ImageMetadata","id":"1*ty4NvNrGg4ReETxqU2N3Og.png"},"User:c3aeaf49d8a4":{"__typename":"User","id":"c3aeaf49d8a4","customDomainState":{"__typename":"CustomDomainState","live":{"__typename":"CustomDomain","domain":"netflixtechblog.medium.com"}},"hasSubdomain":true,"username":"netflixtechblog","linkedAccounts":{"__ref":"LinkedAccounts:c3aeaf49d8a4"},"isSuspended":false,"name":"Netflix Technology Blog","imageId":"1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":432149,"followingCount":9,"collectionFollowingCount":1},"bio":"Learn more about how Netflix designs, builds, and operates our systems and engineering organizations","membership":null,"allowNotes":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:c3aeaf49d8a4-viewerId:lo_66362cd610d5"},"twitterScreenName":""},"Post:e2b67c88c9fb":{"__typename":"Post","id":"e2b67c88c9fb","firstPublishedAt":1739581974346,"creator":{"__ref":"User:c3aeaf49d8a4"},"collection":{"__ref":"Collection:2615bd06b42e"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fnetflixtechblog.com\u002Fintroducing-impressions-at-netflix-e2b67c88c9fb","sequence":null,"uniqueSlug":"introducing-impressions-at-netflix-e2b67c88c9fb"},"LinkedAccounts:c3aeaf49d8a4":{"__typename":"LinkedAccounts","mastodon":null,"id":"c3aeaf49d8a4"},"Paragraph:9372f1150e78_0":{"__typename":"Paragraph","id":"9372f1150e78_0","name":"c9d8","type":"H3","href":null,"layout":null,"metadata":null,"text":"Using Presto in our Big Data Platform on AWS","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_1":{"__typename":"Paragraph","id":"9372f1150e78_1","name":"4389","type":"P","href":null,"layout":null,"metadata":null,"text":"by Eva Tse, Zhenxiao Luo, Nezih Yigitbasi @ Big Data Platform team","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":0,"end":66,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_2":{"__typename":"Paragraph","id":"9372f1150e78_2","name":"a758","type":"P","href":null,"layout":null,"metadata":null,"text":"At Netflix, the Big Data Platform team is responsible for building a reliable data analytics platform shared across the whole company. In general, Netflix product decisions are very data driven. So we play a big role in helping different teams to gain product and consumer insights from a multi-petabyte scale data warehouse (DW). Their use cases range from analyzing A\u002FB tests results to analyzing user streaming experience to training data models for our recommendation algorithms.\n \nWe shared our overall architecture in a previous blog post. The underpinning of our big data platform is that we leverage AWS S3 for our DW. This architecture allows us to separate compute and storage layers. It allows multiple clusters to share the same data on S3 and clusters can be long-running and yet transient (for flexibility). Our users typically write Pig or Hive jobs for ETL and data analytics.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":526,"end":544,"href":"https:\u002F\u002Fmedium.com\u002F@Netflix_Techblog\u002Fhadoop-platform-as-a-service-in-the-cloud-c23f35f965e7","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_3":{"__typename":"Paragraph","id":"9372f1150e78_3","name":"b6e9","type":"P","href":null,"layout":null,"metadata":null,"text":"A small subset of the ETL output and some aggregated data is transferred to Teradata for interactive querying and reporting. On the other hand, we also have the need to do low latency interactive data exploration on our broader data set on S3. These are the use cases that Presto serves exceptionally well. Seven months ago, we first deployed Presto into production and it is now an integral part of our data ecosystem. In this blog post, we would like to share our experience with Presto and how we made it work for us!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":273,"end":279,"href":"http:\u002F\u002Fprestodb.io\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_4":{"__typename":"Paragraph","id":"9372f1150e78_4","name":"ac5b","type":"H3","href":null,"layout":null,"metadata":null,"text":"Why Presto?","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_5":{"__typename":"Paragraph","id":"9372f1150e78_5","name":"308f","type":"P","href":null,"layout":null,"metadata":null,"text":"We had been in search of an interactive querying engine that could work well for us. Ideally, we wanted an open source project that could handle our scale of data & processing needs, had great momentum, was well integrated with the Hive metastore, and was easy for us to integrate with our DW on S3. We were delighted when Facebook open sourced Presto.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_6":{"__typename":"Paragraph","id":"9372f1150e78_6","name":"00c4","type":"P","href":null,"layout":null,"metadata":null,"text":"In terms of scale, we have a 10 petabyte data warehouse on S3. Our users from different organizations query diverse data sets across expansive date ranges. For this use case, caching a specific dataset in memory would not work because cache hit rate would be extremely low unless we have an unreasonably large cache. The streaming DAG execution architecture of Presto is well-suited for this sporadic data exploration usage pattern.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_7":{"__typename":"Paragraph","id":"9372f1150e78_7","name":"e3a8","type":"P","href":null,"layout":null,"metadata":null,"text":"In terms of integrating with our big data platform, Presto has a connector architecture that is Hadoop friendly. It allows us to easily plug in an S3 file system. We were up and running in test mode after only a month of work on the S3 file system connector in collaboration with Facebook.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_8":{"__typename":"Paragraph","id":"9372f1150e78_8","name":"0b09","type":"P","href":null,"layout":null,"metadata":null,"text":"In terms of usability, Presto supports ANSI SQL, which has made it very easy for our analysts and developers to get rolling with it. As far as limitations \u002F drawbacks, user-defined functions in Presto are more involved to develop, build, and deploy as compared to Hive and Pig. Also, for users who want to productionize their queries, they need to rewrite them in HiveQL or Pig Latin, as we don’t currently use Presto in our critical production pipelines. While there are some minor inconveniences, the benefits of being able to interactively analyze large amounts of data is a huge win for us.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_9":{"__typename":"Paragraph","id":"9372f1150e78_9","name":"3842","type":"P","href":null,"layout":null,"metadata":null,"text":"Finally, Presto was already running in production at Facebook. We did some performance benchmarking and stress testing and we were impressed. We also looked under the hood and saw well designed and documented Java code. We were convinced!","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_10":{"__typename":"Paragraph","id":"9372f1150e78_10","name":"b421","type":"H3","href":null,"layout":null,"metadata":null,"text":"Our production environment and use cases","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_11":{"__typename":"Paragraph","id":"9372f1150e78_11","name":"51d2","type":"P","href":null,"layout":null,"metadata":null,"text":"Currently, we are running with ~250 m2.4xlarge EC2 worker instances and our coordinator is on r3.4xlarge. Our users run ~2500 queries\u002Fworkday. Our Presto cluster is completely isolated from our Hadoop clusters, though they all access the same data on our S3 DW.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_12":{"__typename":"Paragraph","id":"9372f1150e78_12","name":"62b3","type":"P","href":null,"layout":null,"metadata":null,"text":"Almost all of our jobs are CPU bound. We set our task memory to a rather high value (i.e., 7GB, with a slight chance in oversubscribing memory) to run some of our memory intensive queries, like big joins or aggregation queries.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_13":{"__typename":"Paragraph","id":"9372f1150e78_13","name":"186f","type":"P","href":null,"layout":null,"metadata":null,"text":"We do not use disk (as we don’t use HDFS) in the cluster. Hence, we will be looking to upgrade to the current generation AWS instance type (e.g. r3), which has more memory, and has better isolation and performance than the previous generation of EC2 instances.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_14":{"__typename":"Paragraph","id":"9372f1150e78_14","name":"60ec","type":"P","href":null,"layout":null,"metadata":null,"text":"We are running the latest Presto 0.76 release with some outstanding pull requests that are not committed yet. Ideally, we would like to contribute everything back to open source and not carry custom patches in our deployment. We are actively working with Facebook and looking forward to committing all of our pull requests.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_15":{"__typename":"Paragraph","id":"9372f1150e78_15","name":"56f9","type":"P","href":null,"layout":null,"metadata":null,"text":"Presto addresses our ad hoc interactive use cases. Our users always go to Presto first for quick answers and for data exploration. If Presto does not support what they need (like big join \u002F aggregation queries that exceed our memory limit or some specific user-defined functions that are not available), then they would go back to Hive or Pig.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_16":{"__typename":"Paragraph","id":"9372f1150e78_16","name":"bd40","type":"P","href":null,"layout":null,"metadata":null,"text":"We are working on a Presto user interface for our internal big data portal. Our algorithm team also built an interactive data clustering application by integrating R with Presto via an open source Python Presto client.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_17":{"__typename":"Paragraph","id":"9372f1150e78_17","name":"8b0a","type":"H3","href":null,"layout":null,"metadata":null,"text":"Performance benchmark","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*4b5v_0dMG69-V1TE.":{"__typename":"ImageMetadata","id":"0*4b5v_0dMG69-V1TE.","originalHeight":346,"originalWidth":584,"focusPercentX":38,"focusPercentY":39,"alt":null},"Paragraph:9372f1150e78_18":{"__typename":"Paragraph","id":"9372f1150e78_18","name":"cf47","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*4b5v_0dMG69-V1TE."},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_19":{"__typename":"Paragraph","id":"9372f1150e78_19","name":"32a0","type":"P","href":null,"layout":null,"metadata":null,"text":"At a high level, we compare Presto and Hive query execution time using our own datasets and users’ queries instead of running standard benchmarks like TPC-H or TPC-DS. This way, we can translate the results back to what we can expect for our use cases. The graph below shows the results of three queries: a group-by query, a join plus a group-by query, and a needle-in-a-haystack (table scan) query. We compared the performance of Presto vs. Hive 0.11 on Hadoop 2 using Parquet input files on S3, all of which we currently use in production. Each query processed the same data set with varying data sizes between ~140GB to ~210GB depending on the file format.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_20":{"__typename":"Paragraph","id":"9372f1150e78_20","name":"2bb9","type":"H4","href":null,"layout":null,"metadata":null,"text":"Cluster setup:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_21":{"__typename":"Paragraph","id":"9372f1150e78_21","name":"2ae3","type":"P","href":null,"layout":null,"metadata":null,"text":"40 nodes m2.4xlarge","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_22":{"__typename":"Paragraph","id":"9372f1150e78_22","name":"db98","type":"H4","href":null,"layout":null,"metadata":null,"text":"Settings we tuned:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_23":{"__typename":"Paragraph","id":"9372f1150e78_23","name":"b50b","type":"P","href":null,"layout":null,"metadata":null,"text":"task.shard.max-threads=32\ntask.max-memory=7GB\nsink.max-buffer-size=1GB\nhive.s3.max-client-retries=50\nhive.s3.max-error-retries=50\nhive.s3.max-connections=500\nhive.s3.connect-timeout=5m\nhive.s3.socket-timeout=5m","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_24":{"__typename":"Paragraph","id":"9372f1150e78_24","name":"2301","type":"P","href":null,"layout":null,"metadata":null,"text":"We understand performance test environments and numbers are hard to reproduce. What is worth noting is the relative performance of these tests. The key takeaway is that queries that take one or two map-reduce (MR) phases in Hadoop run 10 to 100 times faster in Presto. The speedup in Presto is linear to the number of MR jobs involved. For jobs that only do a table scan (i.e., I\u002FO bound instead of CPU bound), it is highly dependent on the read performance of the file format used. We did some work on Presto \u002F Parquet integration, which we will cover in the next section.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_25":{"__typename":"Paragraph","id":"9372f1150e78_25","name":"146a","type":"H3","href":null,"layout":null,"metadata":null,"text":"Our Presto contributions","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_26":{"__typename":"Paragraph","id":"9372f1150e78_26","name":"39d7","type":"P","href":null,"layout":null,"metadata":null,"text":"The primary and initial piece of work that made Presto work for us was S3 FileSystem integration. In addition, we also worked on optimizing S3 multipart upload. We also made a few enhancements and bug fixes based on our use cases along the way: disabling recursive directory listing, json tuple generation, foreground metastore refresh, mbean for S3 filesystem monitoring, and handling S3 client socket timeout.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":71,"end":84,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F991","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":140,"end":159,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1532","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":245,"end":282,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1300","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":284,"end":305,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1724","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":307,"end":335,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1744","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":337,"end":371,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1571","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":377,"end":410,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1478","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_27":{"__typename":"Paragraph","id":"9372f1150e78_27","name":"9310","type":"P","href":null,"layout":null,"metadata":null,"text":"In general, we are committed to make Presto work better for our users and to cover more of their needs. Here are a few big enhancements that we are currently working on:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_28":{"__typename":"Paragraph","id":"9372f1150e78_28","name":"a234","type":"H4","href":null,"layout":null,"metadata":null,"text":"Parquet file format support","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_29":{"__typename":"Paragraph","id":"9372f1150e78_29","name":"84d7","type":"P","href":null,"layout":null,"metadata":null,"text":"We recently upgraded our DW to use the Parquet file format (FF) for its performance on S3 and for its flexibility to integrate with different data processing engines. Hence, we are committed to make Presto work better with Parquet FF. (For details on why we chose Parquet and what we contributed to make it work in our environment, stay tuned for an upcoming blog post).","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_30":{"__typename":"Paragraph","id":"9372f1150e78_30","name":"fbfb","type":"P","href":null,"layout":null,"metadata":null,"text":"Developing based on Facebook’s initial Parquet integration, we added support for predicate pushdown, column position based access (instead of name based access) to Parquet columns, and data type coercion. For context, we use the Hive metastore as our source of truth for metadata, and we do schema evolution on the Hive metastore. Hence, we need column position based access to work with our Hive metastore instead of using the schema information stored in Parquet files.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":31,"end":58,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1541","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":63,"end":76,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1709","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_31":{"__typename":"Paragraph","id":"9372f1150e78_31","name":"7740","type":"P","href":null,"layout":null,"metadata":null,"text":"Here is a comparison of Presto job execution times among different FFs. We compare read performance of sequence file (a FF we have historically used), ORCFile (we benchmarked the latest integration with predicate pushdown, vectorization and lazy materialization on read) and Parquet. We also compare the performance on S3 vs. HDFS. In this test, we use the same data sets and environment as the above benchmark test. The query is a needle-in-a-haystack query that does a select and filter on a condition that returns zero rows.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":151,"end":158,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1541","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*ylMkKWHRWMzyxDvW.":{"__typename":"ImageMetadata","id":"0*ylMkKWHRWMzyxDvW.","originalHeight":369,"originalWidth":690,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:9372f1150e78_32":{"__typename":"Paragraph","id":"9372f1150e78_32","name":"29ff","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*ylMkKWHRWMzyxDvW."},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_33":{"__typename":"Paragraph","id":"9372f1150e78_33","name":"8113","type":"P","href":null,"layout":null,"metadata":null,"text":"As next step, we will look into improving Parquet performance further by doing predicate pushdown to eliminate whole row groups, vectorization and lazy materialization on read. We believe this will make Parquet performance on par with ORC files.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_34":{"__typename":"Paragraph","id":"9372f1150e78_34","name":"c42a","type":"H4","href":null,"layout":null,"metadata":null,"text":"ODBC \u002F JDBC support","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_35":{"__typename":"Paragraph","id":"9372f1150e78_35","name":"f3c0","type":"P","href":null,"layout":null,"metadata":null,"text":"This is one of the biggest asks from our users. Users like to connect to our Hive DW directly to do exploratory \u002F ad hoc reporting because it has the full dataset. Given Presto is interactive and integrated with Hive metastore, it is a natural fit.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_36":{"__typename":"Paragraph","id":"9372f1150e78_36","name":"3de9","type":"P","href":null,"layout":null,"metadata":null,"text":"Presto has a native ODBC driver that was recently open sourced. We made a few bug fixes and we are working on more enhancements. Overall, it is working well now for our Tableau users in extract (non-live exploration) mode. For our users who prefer to use Microstrategy, we plan to explore different options to integrate with it next.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":74,"end":127,"href":"https:\u002F\u002Fgithub.com\u002Fprestodb\u002Fpresto-odbc\u002Fpulls?q=is%3Apr+author%3Anezihyigitbasi","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_37":{"__typename":"Paragraph","id":"9372f1150e78_37","name":"6c35","type":"H4","href":null,"layout":null,"metadata":null,"text":"Map data type support","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_38":{"__typename":"Paragraph","id":"9372f1150e78_38","name":"d0d9","type":"P","href":null,"layout":null,"metadata":null,"text":"All the event data generated from our Netflix services and Netflix-enabled devices comes through our Suro pipeline before landing in our DW. For flexibility, this event data is structured as key\u002Fvalue pairs, which get automatically stored in map columns in our DW. Users may pull out keys as a top level columns in the Hive metastore by adjusting some configurations in our data pipeline. Still, a large number of key\u002Fvalue pairs remain in the map because there are a large number of keys and the key space is very sparse.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":101,"end":105,"href":"https:\u002F\u002Fmedium.com\u002F@Netflix_Techblog\u002Fannouncing-suro-backbone-of-netflixs-data-pipeline-5c660ca917b6","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_39":{"__typename":"Paragraph","id":"9372f1150e78_39","name":"d01d","type":"P","href":null,"layout":null,"metadata":null,"text":"It is very common for users to lookup a specific key from the map. With our current Parquet integration, looking up a key from the map column means converting the column to JSON string first then parsing it. Facebook recently added native support for array and map data types. We plan to further enhance it to support array element or map key specific column pruning and predicate pushdown for Parquet FF to improve performance.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":251,"end":275,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1687","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_40":{"__typename":"Paragraph","id":"9372f1150e78_40","name":"4349","type":"H4","href":null,"layout":null,"metadata":null,"text":"Our wishlist","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_41":{"__typename":"Paragraph","id":"9372f1150e78_41","name":"59cc","type":"P","href":null,"layout":null,"metadata":null,"text":"There are still a couple of items that are high on our wishlist and we would love to contribute on these when we have the bandwidth.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_42":{"__typename":"Paragraph","id":"9372f1150e78_42","name":"1166","type":"P","href":null,"layout":null,"metadata":null,"text":"Big table join. It is very common for our queries to join tables as we have a lot of normalized data in our DW. We are excited to see that distributed hash join is now supported and plan to check it out. Sort-merge join would likely be useful to solve some of the even bigger join use cases that we have.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":139,"end":160,"href":"https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fpresto\u002Fpull\u002F1683","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":14,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_43":{"__typename":"Paragraph","id":"9372f1150e78_43","name":"5162","type":"P","href":null,"layout":null,"metadata":null,"text":"Graceful shrink. Given Presto is used for our ad hoc use cases, and given we run it in the cloud, it would be most efficient if we could scale up the cluster during peak hours (mostly work hours) and scale down during trough hours (night time or weekends). If Presto nodes can be blacklisted and gracefully drained before shutdown, we could combine that with available JMX metrics to do heuristic-based auto expand\u002Fshrink of the cluster.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_44":{"__typename":"Paragraph","id":"9372f1150e78_44","name":"c17a","type":"H3","href":null,"layout":null,"metadata":null,"text":"Key takeaway","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_45":{"__typename":"Paragraph","id":"9372f1150e78_45","name":"a2e4","type":"P","href":null,"layout":null,"metadata":null,"text":"Presto makes the lives of our users a lot easier. It tremendously improves their productivity.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_46":{"__typename":"Paragraph","id":"9372f1150e78_46","name":"6562","type":"P","href":null,"layout":null,"metadata":null,"text":"We have learned from our experience that getting involved and contributing back to open source technologies is the best way to make sure it works for our use cases in a fast paced and evolving environment. We have been working closely with the Facebook team to discuss our use cases and align priorities. They have been open about their roadmap, quick in adding new features, and helpful in providing feedback to our contributions. We look forward to continuing to work with them and the community to make Presto even better and more comprehensive. Let us know if you are interested in sharing your experiences using Presto.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_47":{"__typename":"Paragraph","id":"9372f1150e78_47","name":"fac7","type":"P","href":null,"layout":null,"metadata":null,"text":"Last but not least, the Big Data Platform team at Netflix has been heads-down innovating on our platform to meet our growing business needs. We will share more of our experiences with our Parquet FF migration and Genie 2 upgrade in upcoming blog posts.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_48":{"__typename":"Paragraph","id":"9372f1150e78_48","name":"1770","type":"P","href":null,"layout":null,"metadata":null,"text":"If you are interested in solving big data problems like ours, we would like to hear from you!","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_49":{"__typename":"Paragraph","id":"9372f1150e78_49","name":"9c95","type":"H3","href":null,"layout":null,"metadata":null,"text":"See Also:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9372f1150e78_50":{"__typename":"Paragraph","id":"9372f1150e78_50","name":"650f","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Hadoop Platform as a Service in the Cloud\na data warehouse of practically infinite scalemedium.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":98,"href":"https:\u002F\u002Fmedium.com\u002F@Netflix_Techblog\u002Fhadoop-platform-as-a-service-in-the-cloud-c23f35f965e7","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":41,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":42,"end":88,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fmedium.com\u002F@Netflix_Techblog\u002Fhadoop-platform-as-a-service-in-the-cloud-c23f35f965e7","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"1*Ut16jjnHzSSrGaFhB-z92A.png"}},"Paragraph:9372f1150e78_51":{"__typename":"Paragraph","id":"9372f1150e78_51","name":"4916","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Announcing Suro\nBackbone of Netflix’s Data Pipelinemedium.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":61,"href":"https:\u002F\u002Fmedium.com\u002F@Netflix_Techblog\u002Fannouncing-suro-backbone-of-netflixs-data-pipeline-5c660ca917b6","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":16,"end":51,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fmedium.com\u002F@Netflix_Techblog\u002Fannouncing-suro-backbone-of-netflixs-data-pipeline-5c660ca917b6","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"1*fkP4F9-AF7vhW7VY0hq43A.png"}},"Paragraph:9372f1150e78_52":{"__typename":"Paragraph","id":"9372f1150e78_52","name":"56cd","type":"P","href":null,"layout":null,"metadata":null,"text":"Originally published at techblog.netflix.com on October 7, 2014.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":24,"end":44,"href":"http:\u002F\u002Ftechblog.netflix.com\u002F2014\u002F10\u002Fusing-presto-in-our-big-data-platform.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":64,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:2615bd06b42e-viewerId:lo_66362cd610d5":{"__typename":"CollectionViewerEdge","id":"collectionId:2615bd06b42e-viewerId:lo_66362cd610d5","isEditor":false,"isMuting":false},"UserViewerEdge:userId:c3aeaf49d8a4-viewerId:lo_66362cd610d5":{"__typename":"UserViewerEdge","id":"userId:c3aeaf49d8a4-viewerId:lo_66362cd610d5","isMuting":false},"ImageMetadata:1*XMfuQcaI93EqrkVcAyVsTw.png":{"__typename":"ImageMetadata","id":"1*XMfuQcaI93EqrkVcAyVsTw.png","originalWidth":2802,"originalHeight":684},"PostViewerEdge:postId:938035909fd4-viewerId:lo_66362cd610d5":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:938035909fd4-viewerId:lo_66362cd610d5"},"Tag:big-data":{"__typename":"Tag","id":"big-data","displayTitle":"Big Data","normalizedTagSlug":"big-data"},"Tag:aws":{"__typename":"Tag","id":"aws","displayTitle":"AWS","normalizedTagSlug":"aws"},"Tag:hadoop":{"__typename":"Tag","id":"hadoop","displayTitle":"Hadoop","normalizedTagSlug":"hadoop"},"Tag:hive":{"__typename":"Tag","id":"hive","displayTitle":"Hive","normalizedTagSlug":"hive"},"Tag:open-source":{"__typename":"Tag","id":"open-source","displayTitle":"Open Source","normalizedTagSlug":"open-source"},"Post:938035909fd4":{"__typename":"Post","id":"938035909fd4","collection":{"__ref":"Collection:2615bd06b42e"},"content({\"postMeteringOptions\":{\"referrer\":\"\"}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"199b","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"0c1b","startIndex":52,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:9372f1150e78_0"},{"__ref":"Paragraph:9372f1150e78_1"},{"__ref":"Paragraph:9372f1150e78_2"},{"__ref":"Paragraph:9372f1150e78_3"},{"__ref":"Paragraph:9372f1150e78_4"},{"__ref":"Paragraph:9372f1150e78_5"},{"__ref":"Paragraph:9372f1150e78_6"},{"__ref":"Paragraph:9372f1150e78_7"},{"__ref":"Paragraph:9372f1150e78_8"},{"__ref":"Paragraph:9372f1150e78_9"},{"__ref":"Paragraph:9372f1150e78_10"},{"__ref":"Paragraph:9372f1150e78_11"},{"__ref":"Paragraph:9372f1150e78_12"},{"__ref":"Paragraph:9372f1150e78_13"},{"__ref":"Paragraph:9372f1150e78_14"},{"__ref":"Paragraph:9372f1150e78_15"},{"__ref":"Paragraph:9372f1150e78_16"},{"__ref":"Paragraph:9372f1150e78_17"},{"__ref":"Paragraph:9372f1150e78_18"},{"__ref":"Paragraph:9372f1150e78_19"},{"__ref":"Paragraph:9372f1150e78_20"},{"__ref":"Paragraph:9372f1150e78_21"},{"__ref":"Paragraph:9372f1150e78_22"},{"__ref":"Paragraph:9372f1150e78_23"},{"__ref":"Paragraph:9372f1150e78_24"},{"__ref":"Paragraph:9372f1150e78_25"},{"__ref":"Paragraph:9372f1150e78_26"},{"__ref":"Paragraph:9372f1150e78_27"},{"__ref":"Paragraph:9372f1150e78_28"},{"__ref":"Paragraph:9372f1150e78_29"},{"__ref":"Paragraph:9372f1150e78_30"},{"__ref":"Paragraph:9372f1150e78_31"},{"__ref":"Paragraph:9372f1150e78_32"},{"__ref":"Paragraph:9372f1150e78_33"},{"__ref":"Paragraph:9372f1150e78_34"},{"__ref":"Paragraph:9372f1150e78_35"},{"__ref":"Paragraph:9372f1150e78_36"},{"__ref":"Paragraph:9372f1150e78_37"},{"__ref":"Paragraph:9372f1150e78_38"},{"__ref":"Paragraph:9372f1150e78_39"},{"__ref":"Paragraph:9372f1150e78_40"},{"__ref":"Paragraph:9372f1150e78_41"},{"__ref":"Paragraph:9372f1150e78_42"},{"__ref":"Paragraph:9372f1150e78_43"},{"__ref":"Paragraph:9372f1150e78_44"},{"__ref":"Paragraph:9372f1150e78_45"},{"__ref":"Paragraph:9372f1150e78_46"},{"__ref":"Paragraph:9372f1150e78_47"},{"__ref":"Paragraph:9372f1150e78_48"},{"__ref":"Paragraph:9372f1150e78_49"},{"__ref":"Paragraph:9372f1150e78_50"},{"__ref":"Paragraph:9372f1150e78_51"},{"__ref":"Paragraph:9372f1150e78_52"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:c3aeaf49d8a4"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fnetflixtechblog.com\u002Fusing-presto-in-our-big-data-platform-on-aws-938035909fd4","primaryTopic":null,"topics":[],"isLimitedState":false,"isPublished":true,"allowResponses":true,"latestPublishedVersion":"9372f1150e78","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":3},"responseDistribution":"NOT_DISTRIBUTED","clapCount":288,"title":"Using Presto in our Big Data Platform on AWS","isSeries":false,"sequence":null,"uniqueSlug":"using-presto-in-our-big-data-platform-on-aws-938035909fd4","socialTitle":"","socialDek":"","canonicalUrl":"http:\u002F\u002Ftechblog.netflix.com\u002F2014\u002F10\u002Fusing-presto-in-our-big-data-platform.html","metaDescription":"Seven months ago, we first deployed Presto into production and it is now an integral part of our data ecosystem. In this blog post, we would like to share our experience with Presto.","latestPublishedAt":1492613029170,"readingTime":8.55314465408805,"previewContent":{"__typename":"PreviewContent","subtitle":"low-latency interactive data exploration"},"previewImage":{"__ref":"ImageMetadata:0*4b5v_0dMG69-V1TE."},"isShortform":false,"seoTitle":"","firstPublishedAt":1412665200000,"updatedAt":1527244383867,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:938035909fd4-viewerId:lo_66362cd610d5"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:big-data"},{"__ref":"Tag:aws"},{"__ref":"Tag:hadoop"},{"__ref":"Tag:hive"},{"__ref":"Tag:open-source"}],"isFeaturedInPublishedPublication":false,"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":2165,"layerCake":0,"responsesLocked":false}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.4b5fe151.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.af7becea.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.5bef8967.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4505.6dfaf853.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9380.fb176dee.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.dc8dbee4.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.933c1c9a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.68bc318b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3045.1cc3d8cb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.3329b100.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.a4ecfb83.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6428.7d30b23c.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6199.6da73f3b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.7d9f7f3d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.67eb283b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.8aa8d357.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4492.0c3e1a1d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2571.6814b962.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.1c286b32.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6128.f8800a13.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2135.2e8dc177.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.60bcefe8.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/144.86429b48.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5240.6281357f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8819.c627c2bf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.d0637ed0.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.a27c27dc.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.0d800846.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.18a8996d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.e1e580cb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/responses.editor.e89462cb.chunk.js"></script><script>window.main();</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10