"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3513],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>f});var o=a(7294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,o)}return a}function r(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){n(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function c(t,e){if(null==t)return{};var a,o,n=function(t,e){if(null==t)return{};var a,o,n={},i=Object.keys(t);for(o=0;o<i.length;o++)a=i[o],e.indexOf(a)>=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o<i.length;o++)a=i[o],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var s=o.createContext({}),p=function(t){var e=o.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):r(r({},e),t)),a},m=function(t){var e=p(t.components);return o.createElement(s.Provider,{value:e},t.children)},l="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},d=o.forwardRef((function(t,e){var a=t.components,n=t.mdxType,i=t.originalType,s=t.parentName,m=c(t,["components","mdxType","originalType","parentName"]),l=p(a),d=n,f=l["".concat(s,".").concat(d)]||l[d]||u[d]||i;return a?o.createElement(f,r(r({ref:e},m),{},{components:a})):o.createElement(f,r({ref:e},m))}));function f(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var i=a.length,r=new Array(i);r[0]=d;var c={};for(var s in e)hasOwnProperty.call(e,s)&&(c[s]=e[s]);c.originalType=t,c[l]="string"==typeof t?t:n,r[1]=c;for(var p=2;p<i;p++)r[p]=a[p];return o.createElement.apply(null,r)}return o.createElement.apply(null,a)}d.displayName="MDXCreateElement"},757:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>s,default:()=>f,frontMatter:()=>c,metadata:()=>p,toc:()=>l});var o=a(7462),n=a(3366),i=(a(7294),a(3905)),r=["components"],c={id:"automatic-compaction",title:"Automatic compaction"},s=void 0,p={unversionedId:"data-management/automatic-compaction",id:"data-management/automatic-compaction",title:"Automatic compaction",description:"\x3c!--",source:"@site/docs/latest/data-management/automatic-compaction.md",sourceDirName:"data-management",slug:"/data-management/automatic-compaction",permalink:"/docs/latest/data-management/automatic-compaction",draft:!1,tags:[],version:"current",frontMatter:{id:"automatic-compaction",title:"Automatic compaction"},sidebar:"docs",previous:{title:"Compaction",permalink:"/docs/latest/data-management/compaction"},next:{title:"Overview and syntax",permalink:"/docs/latest/querying/sql"}},m={},l=[{value:"Enable automatic compaction",id:"enable-automatic-compaction",level:2},{value:"web console",id:"web-console",level:3},{value:"Compaction configuration API",id:"compaction-configuration-api",level:3},{value:"Configure automatic compaction",id:"configure-automatic-compaction",level:2},{value:"Avoid conflicts with ingestion",id:"avoid-conflicts-with-ingestion",level:3},{value:"Set frequency of compaction runs",id:"set-frequency-of-compaction-runs",level:3},{value:"View automatic compaction statistics",id:"view-automatic-compaction-statistics",level:2},{value:"Examples",id:"examples",level:2},{value:"Change segment granularity",id:"change-segment-granularity",level:3},{value:"Update partitioning scheme",id:"update-partitioning-scheme",level:3},{value:"Learn more",id:"learn-more",level:2}],u={toc:l},d="wrapper";function f(t){var e=t.components,c=(0,n.Z)(t,r);return(0,i.kt)(d,(0,o.Z)({},u,c,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"In Apache Druid, compaction is a special type of ingestion task that reads data from a Druid datasource and writes it back into the same datasource. A common use case for this is to ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/segment-optimization"},"optimally size segments")," after ingestion to improve query performance. Automatic compaction, or auto-compaction, refers to the system for automatic execution of compaction tasks managed by the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/design/coordinator"},"Druid Coordinator"),"."),(0,i.kt)("p",null,"The Coordinator ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/configuration/#coordinator-operation"},"indexing period"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"druid.coordinator.period.indexingPeriod"),", controls the frequency of compaction tasks.\nThe default indexing period is 30 minutes, meaning that the Coordinator first checks for segments to compact at most 30 minutes from when auto-compaction is enabled.\nThis time period affects other Coordinator duties including merge and conversion tasks.\nTo configure the auto-compaction time period without interfering with ",(0,i.kt)("inlineCode",{parentName:"p"},"indexingPeriod"),", see ",(0,i.kt)("a",{parentName:"p",href:"#set-frequency-of-compaction-runs"},"Set frequency of compaction runs"),"."),(0,i.kt)("p",null,"At every invocation of auto-compaction, the Coordinator initiates a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction"},"segment search")," to determine eligible segments to compact.\nWhen there are eligible segments to compact, the Coordinator issues compaction tasks based on available worker capacity.\nIf a compaction task takes longer than the indexing period, the Coordinator waits for it to finish before resuming the period for segment search."),(0,i.kt)("p",null,"As a best practice, you should set up auto-compaction for all Druid datasources. You can run compaction tasks manually for cases where you want to allocate more system resources. For example, you may choose to run multiple compaction tasks in parallel to compact an existing datasource for the first time. See ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/data-management/compaction"},"Compaction")," for additional details and use cases."),(0,i.kt)("p",null,"This topic guides you through setting up automatic compaction for your Druid cluster. See the ",(0,i.kt)("a",{parentName:"p",href:"#examples"},"examples")," for common use cases for automatic compaction."),(0,i.kt)("h2",{id:"enable-automatic-compaction"},"Enable automatic compaction"),(0,i.kt)("p",null,"You can enable automatic compaction for a datasource using the web console or programmatically via an API.\nThis process differs for manual compaction tasks, which can be submitted from the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/web-console"},"Tasks view of the web console")," or the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/api-reference#tasks"},"Tasks API"),"."),(0,i.kt)("h3",{id:"web-console"},"web console"),(0,i.kt)("p",null,"Use the web console to enable automatic compaction for a datasource as follows."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click ",(0,i.kt)("strong",{parentName:"li"},"Datasources")," in the top-level navigation."),(0,i.kt)("li",{parentName:"ol"},"In the ",(0,i.kt)("strong",{parentName:"li"},"Compaction")," column, click the edit icon for the datasource to compact."),(0,i.kt)("li",{parentName:"ol"},"In the ",(0,i.kt)("strong",{parentName:"li"},"Compaction config")," dialog, configure the auto-compaction settings. The dialog offers a form view as well as a JSON view. Editing the form updates the JSON specification, and editing the JSON updates the form field, if present. Form fields not present in the JSON indicate default values. You may add additional properties to the JSON for auto-compaction settings not displayed in the form. See ",(0,i.kt)("a",{parentName:"li",href:"#configure-automatic-compaction"},"Configure automatic compaction")," for supported settings for auto-compaction."),(0,i.kt)("li",{parentName:"ol"},"Click ",(0,i.kt)("strong",{parentName:"li"},"Submit"),"."),(0,i.kt)("li",{parentName:"ol"},"Refresh the ",(0,i.kt)("strong",{parentName:"li"},"Datasources")," view. The ",(0,i.kt)("strong",{parentName:"li"},"Compaction")," column for the datasource changes from \u201cNot enabled\u201d to \u201cAwaiting first run.\u201d")),(0,i.kt)("p",null,"The following screenshot shows the compaction config dialog for a datasource with auto-compaction enabled.\n",(0,i.kt)("img",{alt:"Compaction config in web console",src:a(4890).Z,width:"1250",height:"640"})),(0,i.kt)("p",null,"To disable auto-compaction for a datasource, click ",(0,i.kt)("strong",{parentName:"p"},"Delete")," from the ",(0,i.kt)("strong",{parentName:"p"},"Compaction config")," dialog. Druid does not retain your auto-compaction configuration."),(0,i.kt)("h3",{id:"compaction-configuration-api"},"Compaction configuration API"),(0,i.kt)("p",null,"Use the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/api-reference#automatic-compaction-status"},"Coordinator API")," to configure automatic compaction.\nTo enable auto-compaction for a datasource, create a JSON object with the desired auto-compaction settings.\nSee ",(0,i.kt)("a",{parentName:"p",href:"#configure-automatic-compaction"},"Configure automatic compaction")," for the syntax of an auto-compaction spec.\nSend the JSON object as a payload in a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/api-reference#automatic-compaction-configuration"},(0,i.kt)("inlineCode",{parentName:"a"},"POST")," request")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/config/compaction"),".\nThe following example configures auto-compaction for the ",(0,i.kt)("inlineCode",{parentName:"p"},"wikipedia")," datasource:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},'curl --location --request POST \'http://localhost:8081/druid/coordinator/v1/config/compaction\' \\\n--header \'Content-Type: application/json\' \\\n--data-raw \'{\n    "dataSource": "wikipedia",\n    "granularitySpec": {\n        "segmentGranularity": "DAY"\n    }\n}\'\n')),(0,i.kt)("p",null,"To disable auto-compaction for a datasource, send a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/api-reference#automatic-compaction-configuration"},(0,i.kt)("inlineCode",{parentName:"a"},"DELETE")," request")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/config/compaction/{dataSource}"),". Replace ",(0,i.kt)("inlineCode",{parentName:"p"},"{dataSource}")," with the name of the datasource for which to disable auto-compaction. For example:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sh"},"curl --location --request DELETE 'http://localhost:8081/druid/coordinator/v1/config/compaction/wikipedia'\n")),(0,i.kt)("h2",{id:"configure-automatic-compaction"},"Configure automatic compaction"),(0,i.kt)("p",null,"You can configure automatic compaction dynamically without restarting Druid.\nThe automatic compaction system uses the following syntax:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n    "dataSource": <task_datasource>,\n    "ioConfig": <IO config>,\n    "dimensionsSpec": <custom dimensionsSpec>,\n    "transformSpec": <custom transformSpec>,\n    "metricsSpec": <custom metricsSpec>,\n    "tuningConfig": <parallel indexing task tuningConfig>,\n    "granularitySpec": <compaction task granularitySpec>,\n    "skipOffsetFromLatest": <time period to avoid compaction>,\n    "taskPriority": <compaction task priority>,\n    "taskContext": <task context>\n}\n')),(0,i.kt)("p",null,"Most fields in the auto-compaction configuration correlate to a typical ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/ingestion-spec"},"Druid ingestion spec"),".\nThe following properties only apply to auto-compaction:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"skipOffsetFromLatest")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"taskPriority")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"taskContext"))),(0,i.kt)("p",null,"Since the automatic compaction system provides a management layer on top of manual compaction tasks,\nthe auto-compaction configuration does not include task-specific properties found in a typical Druid ingestion spec.\nThe following properties are automatically set by the Coordinator:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"type"),": Set to ",(0,i.kt)("inlineCode",{parentName:"li"},"compact"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"id"),": Generated using the task type, datasource name, interval, and timestamp. The task ID is prefixed with ",(0,i.kt)("inlineCode",{parentName:"li"},"coordinator-issued"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"context"),": Set according to the user-provided ",(0,i.kt)("inlineCode",{parentName:"li"},"taskContext"),".")),(0,i.kt)("p",null,"Compaction tasks fetch all ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/data-management/compaction#compaction-io-configuration"},"relevant segments")," prior to launching any subtasks,\n",(0,i.kt)("em",{parentName:"p"},"unless")," the following items are all set. It is strongly recommended to set all of these items to maximize performance\nand minimize disk usage of the ",(0,i.kt)("inlineCode",{parentName:"p"},"compact")," tasks launched by auto-compaction:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/data-management/compaction#compaction-granularity-spec"},(0,i.kt)("inlineCode",{parentName:"a"},"granularitySpec")),". All three values must be set to non-null values: ",(0,i.kt)("inlineCode",{parentName:"li"},"segmentGranularity"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"queryGranularity"),", and ",(0,i.kt)("inlineCode",{parentName:"li"},"rollup"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/data-management/compaction#compaction-dimensions-spec"},(0,i.kt)("inlineCode",{parentName:"a"},"dimensionsSpec"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"metricsSpec"))),(0,i.kt)("p",null,"For more details on each of the specs in an auto-compaction configuration, see ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/configuration/#automatic-compaction-dynamic-configuration"},"Automatic compaction dynamic configuration"),"."),(0,i.kt)("h3",{id:"avoid-conflicts-with-ingestion"},"Avoid conflicts with ingestion"),(0,i.kt)("p",null,"Compaction tasks may be interrupted when they interfere with ingestion. For example, this occurs when an ingestion task needs to write data to a segment for a time interval locked for compaction. If there are continuous failures that prevent compaction from making progress, consider one of the following strategies:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Set ",(0,i.kt)("inlineCode",{parentName:"li"},"skipOffsetFromLatest")," to reduce the chance of conflicts between ingestion and compaction. See more details in this section below."),(0,i.kt)("li",{parentName:"ul"},"Increase the priority value of compaction tasks relative to ingestion tasks. Only recommended for advanced users. This approach can cause ingestion jobs to fail or lag. To change the priority of compaction tasks, set ",(0,i.kt)("inlineCode",{parentName:"li"},"taskPriority")," to the desired priority value in the auto-compaction configuration. For details on the priority values of different task types, see ",(0,i.kt)("a",{parentName:"li",href:"/docs/latest/ingestion/tasks#lock-priority"},"Lock priority"),".")),(0,i.kt)("p",null,"The Coordinator compacts segments from newest to oldest. In the auto-compaction configuration, you can set a time period, relative to the end time of the most recent segment, for segments that should not be compacted. Assign this value to ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest"),". Note that this offset is not relative to the current time but to the latest segment time. For example, if you want to skip over segments from five days prior to the end time of the most recent segment, assign ",(0,i.kt)("inlineCode",{parentName:"p"},'"skipOffsetFromLatest": "P5D"'),"."),(0,i.kt)("p",null,"To set ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest"),", consider how frequently you expect the stream to receive late arriving data. If your stream only occasionally receives late arriving data, the auto-compaction system robustly compacts your data even though data is ingested outside the ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest")," window. For most realtime streaming ingestion use cases, it is reasonable to set ",(0,i.kt)("inlineCode",{parentName:"p"},"skipOffsetFromLatest")," to a few hours or a day."),(0,i.kt)("h3",{id:"set-frequency-of-compaction-runs"},"Set frequency of compaction runs"),(0,i.kt)("p",null,"If you want the Coordinator to check for compaction more frequently than its indexing period, create a separate group to handle compaction duties.\nSet the time period of the duty group in the ",(0,i.kt)("inlineCode",{parentName:"p"},"coordinator/runtime.properties")," file.\nThe following example shows how to create a duty group named ",(0,i.kt)("inlineCode",{parentName:"p"},"compaction")," and set the auto-compaction period to 1 minute:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'druid.coordinator.dutyGroups=["compaction"]\ndruid.coordinator.compaction.duties=["compactSegments"]\ndruid.coordinator.compaction.period=PT60S\n')),(0,i.kt)("h2",{id:"view-automatic-compaction-statistics"},"View automatic compaction statistics"),(0,i.kt)("p",null,"After the Coordinator has initiated auto-compaction, you can view compaction statistics for the datasource, including the number of bytes, segments, and intervals already compacted and those awaiting compaction. The Coordinator also reports the total bytes, segments, and intervals not eligible for compaction in accordance with its ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/design/coordinator#segment-search-policy-in-automatic-compaction"},"segment search policy"),"."),(0,i.kt)("p",null,"In the web console, the Datasources view displays auto-compaction statistics. The Tasks view shows the task information for compaction tasks that were triggered by the automatic compaction system."),(0,i.kt)("p",null,"To get statistics by API, send a ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/api-reference#automatic-compaction-status"},(0,i.kt)("inlineCode",{parentName:"a"},"GET")," request")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/compaction/status"),". To filter the results to a particular datasource, pass the datasource name as a query parameter to the request\u2014for example, ",(0,i.kt)("inlineCode",{parentName:"p"},"/druid/coordinator/v1/compaction/status?dataSource=wikipedia"),"."),(0,i.kt)("h2",{id:"examples"},"Examples"),(0,i.kt)("p",null,"The following examples demonstrate potential use cases in which auto-compaction may improve your Druid performance. See more details in ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/data-management/compaction#compaction-strategies"},"Compaction strategies"),". The examples in this section do not change the underlying data."),(0,i.kt)("h3",{id:"change-segment-granularity"},"Change segment granularity"),(0,i.kt)("p",null,"You have a stream set up to ingest data with ",(0,i.kt)("inlineCode",{parentName:"p"},"HOUR")," segment granularity into the ",(0,i.kt)("inlineCode",{parentName:"p"},"wikistream")," datasource. You notice that your Druid segments are smaller than the ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/operations/segment-optimization"},"recommended segment size")," of 5 million rows per segment. You wish to automatically compact segments to ",(0,i.kt)("inlineCode",{parentName:"p"},"DAY")," granularity while leaving the latest week of data ",(0,i.kt)("em",{parentName:"p"},"not")," compacted because your stream consistently receives data within that time period."),(0,i.kt)("p",null,"The following auto-compaction configuration compacts existing ",(0,i.kt)("inlineCode",{parentName:"p"},"HOUR")," segments into ",(0,i.kt)("inlineCode",{parentName:"p"},"DAY")," segments while leaving the latest week of data not compacted:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "dataSource": "wikistream",\n  "granularitySpec": {\n    "segmentGranularity": "DAY"\n  },\n  "skipOffsetFromLatest": "P1W",\n}\n')),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"Auto-compaction skips datasources containing ALL granularity segments when the target granularity is different.")),(0,i.kt)("h3",{id:"update-partitioning-scheme"},"Update partitioning scheme"),(0,i.kt)("p",null,"For your ",(0,i.kt)("inlineCode",{parentName:"p"},"wikipedia")," datasource, you want to optimize segment access when regularly ingesting data without compromising compute time when querying the data. Your ingestion spec for batch append uses ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/native-batch#dynamic-partitioning"},"dynamic partitioning")," to optimize for write-time operations, while your stream ingestion partitioning is configured by the stream service. You want to implement auto-compaction to reorganize the data with a suitable read-time partitioning using ",(0,i.kt)("a",{parentName:"p",href:"/docs/latest/ingestion/native-batch#multi-dimension-range-partitioning"},"multi-dimension range partitioning"),". Based on the dimensions frequently accessed in queries, you wish to partition on the following dimensions: ",(0,i.kt)("inlineCode",{parentName:"p"},"channel"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"countryName"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"namespace"),"."),(0,i.kt)("p",null,"The following auto-compaction configuration compacts updates the ",(0,i.kt)("inlineCode",{parentName:"p"},"wikipedia")," segments to use multi-dimension range partitioning:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "dataSource": "wikipedia",\n  "tuningConfig": {\n    "partitionsSpec": {\n      "type": "range",\n      "partitionDimensions": [\n        "channel",\n        "countryName",\n        "namespace"\n      ],\n      "targetRowsPerSegment": 5000000\n    }\n  }\n}\n')),(0,i.kt)("h2",{id:"learn-more"},"Learn more"),(0,i.kt)("p",null,"See the following topics for more information:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/data-management/compaction"},"Compaction")," for an overview of compaction and how to set up manual compaction in Druid."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/operations/segment-optimization"},"Segment optimization")," for guidance on evaluating and optimizing Druid segment size."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/latest/design/coordinator#automatic-compaction"},"Coordinator process")," for details on how the Coordinator plans compaction tasks.")))}f.isMDXComponent=!0},4890:(t,e,a)=>{a.d(e,{Z:()=>o});const o=a.p+"assets/images/compaction-config-2d5e391fe681a9c978060c383357b531.png"}}]);