"use strict";(self.webpackChunkdoris_website=self.webpackChunkdoris_website||[]).push([[62784],{15680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>g});var r=t(296540);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var a=r.createContext({}),c=function(e){var n=r.useContext(a),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},u=function(e){var n=c(e.components);return r.createElement(a.Provider,{value:n},e.children)},s="mdxType",y={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,a=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=c(t),m=i,g=s["".concat(a,".").concat(m)]||s[m]||y[m]||o;return t?r.createElement(g,p(p({ref:n},u),{},{components:t})):r.createElement(g,p({ref:n},u))}));function g(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,p=new Array(o);p[0]=m;var l={};for(var a in n)hasOwnProperty.call(n,a)&&(l[a]=n[a]);l.originalType=e,l[s]="string"==typeof e?e:i,p[1]=l;for(var c=2;c<o;c++)p[c]=t[c];return r.createElement.apply(null,p)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},55754:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>p,default:()=>y,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=t(58168),i=(t(296540),t(15680));const o={title:"PipelineX \u6267\u884c\u5f15\u64ce",language:"zh-CN",toc_min_heading_level:2,toc_max_heading_level:4},p=void 0,l={unversionedId:"query/pipeline/pipeline-x-execution-engine",id:"version-2.0/query/pipeline/pipeline-x-execution-engine",title:"PipelineX \u6267\u884c\u5f15\u64ce",description:"\x3c!--",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.0/query/pipeline/pipeline-x-execution-engine.md",sourceDirName:"query/pipeline",slug:"/query/pipeline/pipeline-x-execution-engine",permalink:"/zh-CN/docs/2.0/query/pipeline/pipeline-x-execution-engine",draft:!1,tags:[],version:"2.0",frontMatter:{title:"PipelineX \u6267\u884c\u5f15\u64ce",language:"zh-CN",toc_min_heading_level:2,toc_max_heading_level:4},sidebar:"docs",previous:{title:"Pipeline \u6267\u884c\u5f15\u64ce",permalink:"/zh-CN/docs/2.0/query/pipeline/pipeline-execution-engine"},next:{title:"\u7f13\u5b58\u6982\u89c8",permalink:"/zh-CN/docs/2.0/query/query-cache/"}},a={},c=[],u={toc:c},s="wrapper";function y(e){let{components:n,...t}=e;return(0,i.yg)(s,(0,r.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.yg)("p",null,"PipelineX \u6267\u884c\u5f15\u64ce \u662f Doris \u5728 2.1 \u7248\u672c\u52a0\u5165\u7684\u5b9e\u9a8c\u6027\u529f\u80fd\u3002\u76ee\u6807\u662f\u4e3a\u4e86\u89e3\u51b3 Doris pipeline \u5f15\u64ce\u7684\u56db\u5927\u95ee\u9898\uff1a"),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("p",{parentName:"li"},"\u6267\u884c\u5e76\u53d1\u4e0a\uff0c\u5f53\u524d Doris \u6267\u884c\u5e76\u53d1\u6536\u5230\u4e24\u4e2a\u56e0\u7d20\u7684\u5236\u7ea6\uff0c\u4e00\u4e2a\u662f fe \u8bbe\u7f6e\u7684\u53c2\u6570\uff0c\u53e6\u4e00\u4e2a\u662f\u53d7\u5b58\u50a8\u5c42 bucket \u6570\u91cf\u7684\u9650\u5236\uff0c\u8fd9\u6837\u7684\u9759\u6001\u5e76\u53d1\u4f7f\u5f97\u6267\u884c\u5f15\u64ce\u65e0\u6cd5\u5145\u5206\u5229\u7528\u673a\u5668\u8d44\u6e90\u3002")),(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("p",{parentName:"li"},"\u6267\u884c\u903b\u8f91\u4e0a\uff0c\u5f53\u524d Doris \u6709\u4e00\u4e9b\u56fa\u5b9a\u7684\u989d\u5916\u5f00\u9500\uff0c\u4f8b\u5982\u8868\u8fbe\u5f0f\u90e8\u5206\u5404\u4e2a instance \u5f7c\u6b64\u72ec\u7acb\uff0c\u800c instance \u7684\u521d\u59cb\u5316\u53c2\u6570\u6709\u5f88\u591a\u516c\u5171\u90e8\u5206\uff0c\u6240\u4ee5\u9700\u8981\u989d\u5916\u8fdb\u884c\u5f88\u591a\u91cd\u590d\u7684\u521d\u59cb\u5316\u6b65\u9aa4\u3002")),(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("p",{parentName:"li"},"\u8c03\u5ea6\u903b\u8f91\u4e0a\uff0c\u5f53\u524d pipeline \u7684\u8c03\u5ea6\u5668\u4f1a\u628a\u963b\u585e task \u5168\u90e8\u653e\u5165\u4e00\u4e2a\u963b\u585e\u961f\u5217\u4e2d\uff0c\u7531\u4e00\u4e2a\u7ebf\u7a0b\u8d1f\u8d23\u8f6e\u8be2\u5e76\u4ece\u963b\u585e\u961f\u5217\u4e2d\u53d6\u51fa\u53ef\u6267\u884c task \u653e\u5165 runnable \u961f\u5217\uff0c\u6240\u4ee5\u5728\u6709\u67e5\u8be2\u6267\u884c\u7684\u8fc7\u7a0b\u4e2d\uff0c\u4f1a\u56fa\u5b9a\u6709\u4e00\u4e2a\u6838\u7684\u8d44\u6e90\u4f5c\u4e3a\u8c03\u5ea6\u7684\u5f00\u9500\u3002")),(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("p",{parentName:"li"},"profile \u65b9\u9762\uff0c\u76ee\u524d pipeline \u65e0\u6cd5\u4e3a\u7528\u6237\u63d0\u4f9b\u7b80\u5355\u6613\u61c2\u7684\u6307\u6807\u3002"))),(0,i.yg)("admonition",{type:"tip"},(0,i.yg)("p",{parentName:"admonition"},"\u4f7f\u7528\u6700\u65b0\u7684 PipelineX \u6267\u884c\u5f15\u64ce\uff0c\u8bf7\u53c2\u8003 Doris 2.1\u3002")))}y.isMDXComponent=!0}}]);