/*! For license information please see f5cd6b6b.da5ddbf6.js.LICENSE.txt */
(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7601],{4137:function(e,t,n){"use strict";n.d(t,{Zo:function(){return c},kt:function(){return m}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,k=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(k,o(o({ref:t},c),{},{components:n})):a.createElement(k,o({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var u=2;u<i;u++)o[u]=n[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2511:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var a=n(3366),r=n(7294),i=n(3727),o=n(9962),l=n(2735),s=n(6136),u=(0,r.createContext)({collectLink:function(){}}),c=n(9524),p=n(3905),d=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];var m=function(e){var t,n,m=e.isNavLink,k=e.to,f=e.href,h=e.activeClassName,g=e.isActive,b=e["data-noBrokenLinkCheck"],v=e.autoAddBaseUrl,y=void 0===v||v,N=(0,a.Z)(e,d),w=(0,o.Z)().siteConfig,P=w.trailingSlash,S=w.baseUrl,C=(0,c.C)().withBaseUrl,E=(0,r.useContext)(u),x=k||f,O=(0,l.Z)(x),q=null==x?void 0:x.replace("pathname://",""),_=void 0!==q?(n=q,y&&function(e){return e.startsWith("/")}(n)?C(n):n):void 0;_&&O&&(_=(0,p.applyTrailingSlash)(_,{trailingSlash:P,baseUrl:S}));var K,j=(0,r.useRef)(!1),A=m?i.OL:i.rU,I=s.Z.canUseIntersectionObserver;(0,r.useEffect)((function(){return!I&&O&&null!=_&&window.docusaurus.prefetch(_),function(){I&&K&&K.disconnect()}}),[_,I,O]);var D=null!==(t=null==_?void 0:_.startsWith("#"))&&void 0!==t&&t,T=!_||!O||D;return _&&O&&!D&&!b&&E.collectLink(_),T?r.createElement("a",Object.assign({href:_},x&&!O&&{target:"_blank",rel:"noopener noreferrer"},N)):r.createElement(A,Object.assign({},N,{onMouseEnter:function(){j.current||null==_||(window.docusaurus.preload(_),j.current=!0)},innerRef:function(e){var t,n;I&&e&&O&&(t=e,n=function(){null!=_&&window.docusaurus.prefetch(_)},(K=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(K.unobserve(t),K.disconnect(),n())}))}))).observe(t))},to:_||""},m&&{isActive:g,activeClassName:h}))}},2735:function(e,t,n){"use strict";function a(e){return!0===/^(\w*:|\/\/)/.test(e)}function r(e){return void 0!==e&&!a(e)}n.d(t,{b:function(){return a},Z:function(){return r}})},9524:function(e,t,n){"use strict";n.d(t,{C:function(){return i},Z:function(){return o}});var a=n(9962),r=n(2735);function i(){var e=(0,a.Z)().siteConfig,t=(e=void 0===e?{}:e).baseUrl,n=void 0===t?"/":t,i=e.url;return{withBaseUrl:function(e,t){return function(e,t,n,a){var i=void 0===a?{}:a,o=i.forcePrependBaseUrl,l=void 0!==o&&o,s=i.absolute,u=void 0!==s&&s;if(!n)return n;if(n.startsWith("#"))return n;if((0,r.b)(n))return n;if(l)return t+n;var c=n.startsWith(t)?n:t+n.replace(/^\//,"");return u?e+c:c}(i,n,e,t)}}}function o(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},8448:function(e,t,n){"use strict";var a=n(7294);t.Z=function(e){var t=e.children,n=e.hidden,r=e.className;return a.createElement("div",{role:"tabpanel",hidden:n,className:r},t)}},7358:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var a=n(7294),r=n(2713);var i=function(){var e=(0,a.useContext)(r.Z);if(null==e)throw new Error('"useUserPreferencesContext" is used outside of "Layout" component.');return e},o=n(6010),l="tabItem_1uMI",s="tabItemActive_2DSg";var u=37,c=39;var p=function(e){var t=e.lazy,n=e.block,r=e.defaultValue,p=e.values,d=e.groupId,m=e.className,k=i(),f=k.tabGroupChoices,h=k.setTabGroupChoices,g=(0,a.useState)(r),b=g[0],v=g[1],y=a.Children.toArray(e.children),N=[];if(null!=d){var w=f[d];null!=w&&w!==b&&p.some((function(e){return e.value===w}))&&v(w)}var P=function(e){var t=e.currentTarget,n=N.indexOf(t),a=p[n].value;v(a),null!=d&&(h(d,a),setTimeout((function(){var e,n,a,r,i,o,l,u;(e=t.getBoundingClientRect(),n=e.top,a=e.left,r=e.bottom,i=e.right,o=window,l=o.innerHeight,u=o.innerWidth,n>=0&&i<=u&&r<=l&&a>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(s),setTimeout((function(){return t.classList.remove(s)}),2e3))}),150))},S=function(e){var t,n;switch(e.keyCode){case c:var a=N.indexOf(e.target)+1;n=N[a]||N[0];break;case u:var r=N.indexOf(e.target)-1;n=N[r]||N[N.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},m)},p.map((function(e){var t=e.value,n=e.label;return a.createElement("li",{role:"tab",tabIndex:b===t?0:-1,"aria-selected":b===t,className:(0,o.Z)("tabs__item",l,{"tabs__item--active":b===t}),key:t,ref:function(e){return N.push(e)},onKeyDown:S,onFocus:P,onClick:P},n)}))),t?(0,a.cloneElement)(y.filter((function(e){return e.props.value===b}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},y.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==b})}))))}},2713:function(e,t,n){"use strict";var a=(0,n(7294).createContext)(void 0);t.Z=a},4136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=t.trailingSlash,a=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var r,i=e.split(/[#?]/)[0],o="/"===i||i===a?i:(r=i,n?function(e){return e.endsWith("/")?e:e+"/"}(r):function(e){return e.endsWith("/")?e.slice(0,-1):e}(r));return e.replace(i,o)}},3905:function(e,t,n){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var r=n(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return a(r).default}});var i=n(3509);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return a(i).default}})},3509:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},9342:function(e,t,n){"use strict";var a=n(7294),r=n(2511),i=n(4184),o=n.n(i);t.Z=function(e){var t=e.children,n=e.className,i=e.badge,l=e.icon,s=e.size,u=e.target,c=e.to,p=o()("jump-to","jump-to--"+s,n),d=a.createElement("div",{className:"jump-to--inner"},a.createElement("div",{className:"jump-to--inner-2"},a.createElement("div",{className:"jump-to--main"},i?a.createElement("span",{className:"badge badge--primary badge--right"},i):"",t),a.createElement("div",{className:"jump-to--right"},a.createElement("i",{className:"feather icon-"+(l||"chevron-right")+" arrow"}))));return u?a.createElement("a",{href:c,target:u,className:p},d):a.createElement(r.Z,{to:c,className:p},d)}},6543:function(e,t,n){"use strict";n.r(t),n.d(t,{frontMatter:function(){return s},contentTitle:function(){return u},metadata:function(){return c},toc:function(){return p},default:function(){return m}});var a=n(7462),r=n(3366),i=(n(7294),n(4137)),o=(n(7358),n(8448),n(9342)),l=["components"],s={title:"Running Pinot in Kubernetes",sidebar_label:"Kubernetes",description:"Running Pinot in Kubernetes",draft:!0},u=void 0,c={unversionedId:"administration/installation/cloud/on-premise",id:"administration/installation/cloud/on-premise",isDocsHomePage:!1,title:"Running Pinot in Kubernetes",description:"Running Pinot in Kubernetes",source:"@site/docs/administration/installation/cloud/on-premise.md",sourceDirName:"administration/installation/cloud",slug:"/administration/installation/cloud/on-premise",permalink:"/docs/administration/installation/cloud/on-premise",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/administration/installation/cloud/on-premise.md",version:"current",frontMatter:{title:"Running Pinot in Kubernetes",sidebar_label:"Kubernetes",description:"Running Pinot in Kubernetes",draft:!0},sidebar:"docs",previous:{title:"Docker",permalink:"/docs/administration/installation/containers/docker"},next:{title:"AWS",permalink:"/docs/administration/installation/cloud/aws"}},p=[{value:"Setup a Pinot cluster for demo",id:"setup-a-pinot-cluster-for-demo",children:[{value:"Update helm dependency",id:"update-helm-dependency",children:[]},{value:"Start Pinot with Helm",id:"start-pinot-with-helm",children:[]}]},{value:"Troubleshooting (For helm v2.12.1)",id:"troubleshooting-for-helm-v2121",children:[]},{value:"Load data into Pinot through Kafka",id:"load-data-into-pinot-through-kafka",children:[{value:"Bring up a Kafka Cluster for realtime data ingestion",id:"bring-up-a-kafka-cluster-for-realtime-data-ingestion",children:[]},{value:"Check Kafka deployment status",id:"check-kafka-deployment-status",children:[]},{value:"Create Kafka topics",id:"create-kafka-topics",children:[]},{value:"Load data into Kafka and Create Pinot Schema/Tables",id:"load-data-into-kafka-and-create-pinot-schematables",children:[]}]},{value:"How to query pinot data",id:"how-to-query-pinot-data",children:[{value:"Pinot Query Console",id:"pinot-query-console",children:[]}]},{value:"Use Superset to query Pinot",id:"use-superset-to-query-pinot",children:[{value:"Bring up Superset",id:"bring-up-superset",children:[]},{value:"(First time) Set up Admin account",id:"first-time-set-up-admin-account",children:[]},{value:"(First time) Init Superset",id:"first-time-init-superset",children:[]},{value:"Load Demo Data source",id:"load-demo-data-source",children:[]},{value:"Access Superset UI",id:"access-superset-ui",children:[]}]},{value:"Access Pinot Using Presto",id:"access-pinot-using-presto",children:[{value:"Deploy Presto with Pinot Plugin",id:"deploy-presto-with-pinot-plugin",children:[]},{value:"Query Presto using Presto CLI",id:"query-presto-using-presto-cli",children:[]},{value:"Sample queries to execute",id:"sample-queries-to-execute",children:[]},{value:"How to clean up Pinot deployment",id:"how-to-clean-up-pinot-deployment",children:[]}]}],d={toc:p};function m(e){var t=e.components,n=(0,r.Z)(e,l);return(0,i.kt)("wrapper",(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"This QuickStart assumes the existence of Kubernetes Cluster. Please follow below links to setup your Kubernetes cluster in local or major cloud vendors."),(0,i.kt)("blockquote",null,(0,i.kt)("b",null,"Prerequisites:")," ",(0,i.kt)("br",null),(0,i.kt)("p",null,"\xa0 ",(0,i.kt)("a",{href:"https://docs.docker.com/docker-for-mac/kubernetes/",target:"_blank"},"Enable Kubernetes on Docker-Desktop"),(0,i.kt)("br",null),"\xa0 ",(0,i.kt)("a",{href:"https://kubernetes.io/docs/tasks/tools/install-minikube/",target:"_blank"},"Setup a Kubernetes Cluster using Amazon Elastic Kubernetes Service (Amazon EKS)")," ",(0,i.kt)("br",null),"\xa0 ",(0,i.kt)("a",{href:"https://kubernetes.io/docs/tasks/tools/install-minikube/",target:"_blank"},"Setup a Kubernetes Cluster using Google Kubernetes Engine(GKE)")," ",(0,i.kt)("br",null),"\xa0 ",(0,i.kt)("a",{href:"https://kubernetes.io/docs/tasks/tools/install-minikube/",target:"_blank"},"Setup a Kubernetes Cluster using Azure Kubernetes Service (AKS)")," ",(0,i.kt)("br",null)," ")),(0,i.kt)("h2",{id:"setup-a-pinot-cluster-for-demo"},"Setup a Pinot cluster for demo"),(0,i.kt)("h3",{id:"update-helm-dependency"},"Update helm dependency"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"helm dependency update\n")),(0,i.kt)("h3",{id:"start-pinot-with-helm"},"Start Pinot with Helm"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"For Helm v2.12.1")),(0,i.kt)("p",null,"If cluster is just initialized, ensure helm is initialized by running:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"helm init --service-account tiller\n")),(0,i.kt)("p",null,"Then deploy pinot cluster by:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'helm install --namespace "pinot-quickstart" --name "pinot" .\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"For Helm v3.0.0")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl create ns pinot-quickstart\nhelm install -n pinot-quickstart pinot .\n")),(0,i.kt)("h2",{id:"troubleshooting-for-helm-v2121"},"Troubleshooting (For helm v2.12.1)"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Error: Please run below command if encountering issue:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'Error: could not find tiller".\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Resolution:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl -n kube-system delete deployment tiller-deploy\nkubectl -n kube-system delete service/tiller-deploy\nhelm init --service-account tiller\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Error: Please run below command if encountering permission issue:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'Error: release pinot failed: namespaces "pinot-quickstart" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "pinot-quickstart"\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Resolution:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f helm-rbac.yaml\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Check deployment status")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get all -n pinot-quickstart\n")),(0,i.kt)("h2",{id:"load-data-into-pinot-through-kafka"},"Load data into Pinot through Kafka"),(0,i.kt)("h3",{id:"bring-up-a-kafka-cluster-for-realtime-data-ingestion"},"Bring up a Kafka Cluster for realtime data ingestion"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"For helm v2.12.1")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'helm repo add incubator https://charts.helm.sh/incubator\nhelm install --namespace "pinot-quickstart"  --name kafka incubator/kafka\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"For helm v3.0.0")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"helm repo add incubator https://charts.helm.sh/incubator\nhelm install -n pinot-quickstart kafka incubator/kafka --set replicas=1\n")),(0,i.kt)("h3",{id:"check-kafka-deployment-status"},"Check Kafka deployment status"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get all -n pinot-quickstart |grep kafka\n")),(0,i.kt)("p",null,"Ensure Kafka deployment is ready before executing the scripts in next steps:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pod/kafka-0                                                 1/1     Running     0          2m\npod/kafka-zookeeper-0                                       1/1     Running     0          10m\npod/kafka-zookeeper-1                                       1/1     Running     0          9m\npod/kafka-zookeeper-2                                       1/1     Running     0          8m\n")),(0,i.kt)("h3",{id:"create-kafka-topics"},"Create Kafka topics"),(0,i.kt)("p",null,"Below scripts will create two Kafka topics for data ingestion:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl -n pinot-quickstart exec kafka-0 -- kafka-topics --zookeeper kafka-zookeeper:2181 --topic flights-realtime --create --partitions 1 --replication-factor 1\nkubectl -n pinot-quickstart exec kafka-0 -- kafka-topics --zookeeper kafka-zookeeper:2181 --topic flights-realtime-avro --create --partitions 1 --replication-factor 1\n")),(0,i.kt)("h3",{id:"load-data-into-kafka-and-create-pinot-schematables"},"Load data into Kafka and Create Pinot Schema/Tables"),(0,i.kt)("p",null,"Below script will deploy 3 batch jobs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Ingest 19492 Json messages to Kafka topic ",(0,i.kt)("inlineCode",{parentName:"li"},"flights-realtime"),"  at a speed of 1 msg/sec"),(0,i.kt)("li",{parentName:"ul"},"Ingest 19492 Avro messages to Kafka topic ",(0,i.kt)("inlineCode",{parentName:"li"},"flights-realtime-avro"),"  at a speed of 1 msg/sec"),(0,i.kt)("li",{parentName:"ul"},"Upload Pinot schema ",(0,i.kt)("inlineCode",{parentName:"li"},"airlineStats")),(0,i.kt)("li",{parentName:"ul"},"Create Pinot Table ",(0,i.kt)("inlineCode",{parentName:"li"},"airlineStats")," to ingest data from Json encoded Kafka topic ",(0,i.kt)("inlineCode",{parentName:"li"},"flights-realtime")),(0,i.kt)("li",{parentName:"ul"},"Create Pinot Table ",(0,i.kt)("inlineCode",{parentName:"li"},"airlineStatsAvro"),"  to ingest data from Avro encoded Kafka topic ",(0,i.kt)("inlineCode",{parentName:"li"},"flights-realtime-avro"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f pinot-realtime-quickstart.yml\n")),(0,i.kt)("h2",{id:"how-to-query-pinot-data"},"How to query pinot data"),(0,i.kt)("h3",{id:"pinot-query-console"},"Pinot Query Console"),(0,i.kt)("p",null,"Please use below script to do local port-forwarding and open Pinot query console on your web browser."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./query-pinot-data.sh\n")),(0,i.kt)("h2",{id:"use-superset-to-query-pinot"},"Use Superset to query Pinot"),(0,i.kt)("h3",{id:"bring-up-superset"},"Bring up Superset"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f superset.yaml\n")),(0,i.kt)("h3",{id:"first-time-set-up-admin-account"},"(First time) Set up Admin account"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl exec -it pod/superset-0 -n pinot-quickstart -- bash -c 'export FLASK_APP=superset:app && flask fab create-admin'\n")),(0,i.kt)("h3",{id:"first-time-init-superset"},"(First time) Init Superset"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl exec -it pod/superset-0 -n pinot-quickstart -- bash -c 'superset db upgrade'\nkubectl exec -it pod/superset-0 -n pinot-quickstart -- bash -c 'superset init'\n")),(0,i.kt)("h3",{id:"load-demo-data-source"},"Load Demo Data source"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl exec -it pod/superset-0 -n pinot-quickstart -- bash -c 'superset import_datasources -p /etc/superset/pinot_example_datasource.yaml'\nkubectl exec -it pod/superset-0 -n pinot-quickstart -- bash -c 'superset import_dashboards -p /etc/superset/pinot_example_dashboard.json'\n")),(0,i.kt)("h3",{id:"access-superset-ui"},"Access Superset UI"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./open-superset-ui.sh\n")),(0,i.kt)("p",null,"You can open the imported dashboard by click Dashboards banner then click on AirlineStats."),(0,i.kt)("h2",{id:"access-pinot-using-presto"},"Access Pinot Using Presto"),(0,i.kt)("h3",{id:"deploy-presto-with-pinot-plugin"},"Deploy Presto with Pinot Plugin"),(0,i.kt)("p",null,"You can run below command to deploy a customized Presto with Pinot plugin."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f presto-coordinator.yaml\n")),(0,i.kt)("h3",{id:"query-presto-using-presto-cli"},"Query Presto using Presto CLI"),(0,i.kt)("p",null,"Once Presto is deployed, you could run below command."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./pinot-presto-cli.sh\n")),(0,i.kt)("h3",{id:"sample-queries-to-execute"},"Sample queries to execute"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"List all catalogs")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-SQL"},"presto:default> show catalogs;\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"Catalog\n---------\n pinot\n system\n(2 rows)\n\nQuery 20191112_050827_00003_xkm4g, FINISHED, 1 node\nSplits: 19 total, 19 done (100.00%)\n0:01 [0 rows, 0B] [0 rows/s, 0B/s]\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"List All tables")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-SQL"},"presto:default> show tables;\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"    Table\n--------------\n airlinestats\n(1 row)\n\nQuery 20191112_050907_00004_xkm4g, FINISHED, 1 node\nSplits: 19 total, 19 done (100.00%)\n0:01 [1 rows, 29B] [1 rows/s, 41B/s]\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Show schema")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"presto:default> DESCRIBE pinot.dontcare.airlinestats;\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"        Column        |  Type   | Extra | Comment\n----------------------+---------+-------+---------\n flightnum            | integer |       |\n origin               | varchar |       |\n quarter              | integer |       |\n lateaircraftdelay    | integer |       |\n divactualelapsedtime | integer |       |\n......\n\nQuery 20191112_051021_00005_xkm4g, FINISHED, 1 node\nSplits: 19 total, 19 done (100.00%)\n0:02 [80 rows, 6.06KB] [35 rows/s, 2.66KB/s]\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Count total documents")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-SQL"},"presto:default> select count(*) as cnt from pinot.dontcare.airlinestats limit 10;\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"}," cnt\n------\n 9745\n(1 row)\n\nQuery 20191112_051114_00006_xkm4g, FINISHED, 1 node\nSplits: 17 total, 17 done (100.00%)\n0:00 [1 rows, 8B] [2 rows/s, 19B/s]\n")),(0,i.kt)("h3",{id:"how-to-clean-up-pinot-deployment"},"How to clean up Pinot deployment"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl delete ns pinot-quickstart\n")),(0,i.kt)(o.Z,{to:"/docs/administration/",mdxType:"Jump"},"Administration"))}m.isMDXComponent=!0},4184:function(e,t){var n;!function(){"use strict";var a={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)){if(n.length){var o=r.apply(null,n);o&&e.push(o)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var l in n)a.call(n,l)&&n[l]&&e.push(l);else e.push(n.toString())}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},6010:function(e,t,n){"use strict";function a(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=a(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function r(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=a(e))&&(r&&(r+=" "),r+=t);return r}n.d(t,{Z:function(){return r}})}}]);