(window.webpackJsonp=window.webpackJsonp||[]).push([[60,8],{126:function(e,a,t){"use strict";t.r(a);var n=t(3),r=t(0),c=t.n(r),l=t(146),i=t(156),s=t(150),o=t(22),u=t(151),m=t(127),h=t.n(m),d=[{title:"Data Preprocessing",imageUrl:"img/spark-flink.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports data processing and algorithm development using spark & python through notebook")},{title:"Machine Learning",imageUrl:"img/tf-pytorch.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports multiple machine learning frameworks for model training.")},{title:"Infrastructure",imageUrl:"img/yarn-k8s.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports Yarn, Kubernetes, Docker with Resource Scheduling.")}];function p(e){var a=e.imageUrl,t=e.title,n=e.description,r=Object(u.a)(a);return c.a.createElement("div",{className:Object(l.a)("col col--4",h.a.feature)},r&&c.a.createElement("div",{className:"text--center"},c.a.createElement("img",{className:h.a.featureImage,src:r,alt:t})),c.a.createElement("h3",null,t),c.a.createElement("p",null,n))}a.default=function(){var e=Object(o.default)().siteConfig,a=void 0===e?{}:e;return c.a.createElement(i.a,{title:"Hello from "+a.title,description:"Description will go into a meta tag in <head />"},c.a.createElement("header",{className:Object(l.a)("hero hero--primary",h.a.heroBanner)},c.a.createElement("div",{className:"container"},c.a.createElement("h1",{className:"hero__title"},a.title),c.a.createElement("p",{className:"hero__subtitle"},a.tagline),c.a.createElement("div",{className:h.a.buttons},c.a.createElement(s.a,{className:Object(l.a)("button button--outline button--secondary button--lg",h.a.getStarted),to:Object(u.a)("/docs")},"Get Started"),c.a.createElement("span",{className:"index-ctas-github-button"},c.a.createElement("iframe",{src:"https://ghbtns.com/github-btn.html?user=apache&repo=submarine&type=star&count=true&size=large",frameBorder:0,scrolling:0,width:160,height:30,title:"GitHub Stars"}))))),c.a.createElement("main",null,d&&d.length>0&&c.a.createElement("section",{className:h.a.features},c.a.createElement("div",{className:"container"},c.a.createElement("div",{className:"row"},d.map((function(e,a){return c.a.createElement(p,Object(n.a)({key:a},e))})))))))}},157:function(e,a,t){"use strict";var n=t(0),r=t.n(n),c=t(154),l=t.n(c),i=t(147),s=t(22);a.a=function(e){var a=Object(n.useRef)(!1),c=Object(n.useRef)(null),o=Object(i.useHistory)(),u=Object(s.default)().siteConfig,m=(void 0===u?{}:u).baseUrl,h=function(){a.current||(Promise.all([fetch(m+"search-doc.json").then((function(e){return e.json()})),fetch(m+"lunr-index.json").then((function(e){return e.json()})),Promise.all([t.e(77),t.e(80)]).then(t.bind(null,172)),t.e(51).then(t.t.bind(null,171,7))]).then((function(e){!function(e,a,t){new t({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,t){var n=m+t.url;document.createElement("a").href=n,o.push(n)}})}(e[0],e[1],e[2].default)})),a.current=!0)},d=Object(n.useCallback)((function(a){c.current.contains(a.target)||c.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:l()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:d,onKeyDown:d,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:l()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:h,onMouseOver:h,onFocus:d,onBlur:d,ref:c}))}}}]);