blob: a8015ed08a98d26036cb35ca215c497b466a5798 [file] [log] [blame]
<!doctype html>
<html class="docs-version-0.12.2 docs-custom-styles" lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-beta.14">
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Hudi: User-Facing Analytics RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Hudi: User-Facing Analytics Atom Feed">
<link rel="alternate" type="application/json" href="/blog/feed.json" title="Apache Hudi: User-Facing Analytics JSON Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Apache Hudi" href="/opensearch.xml">
<link rel="alternate" type="application/rss+xml" href="/videos/rss.xml" title="Apache Hudi RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/videos/atom.xml" title="Apache Hudi Atom Feed">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Comfortaa|Ubuntu|Roboto|Source+Code+Pro">
<link rel="stylesheet" href="https://at-ui.github.io/feather-font/css/iconfont.css"><title data-react-helmet="true">All Configurations | Apache Hudi</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://hudi.apache.org/docs/0.12.2/configurations"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="0.12.2"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-0.12.2"><meta data-react-helmet="true" property="og:title" content="All Configurations | Apache Hudi"><meta data-react-helmet="true" name="description" content="This page covers the different ways of configuring your job to write/read Hudi tables. At a high level, you can control behaviour at few levels."><meta data-react-helmet="true" property="og:description" content="This page covers the different ways of configuring your job to write/read Hudi tables. At a high level, you can control behaviour at few levels."><meta data-react-helmet="true" name="keywords" content="configurations,default,flink options,spark,configs,parameters"><link data-react-helmet="true" rel="icon" href="/assets/images/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://hudi.apache.org/docs/0.12.2/configurations"><link data-react-helmet="true" rel="alternate" href="https://hudi.apache.org/docs/0.12.2/configurations" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://hudi.apache.org/cn/docs/0.12.2/configurations" hreflang="cn"><link data-react-helmet="true" rel="alternate" href="https://hudi.apache.org/docs/0.12.2/configurations" hreflang="x-default"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.ea681a30.css">
<link rel="preload" href="/assets/js/runtime~main.2cab5691.js" as="script">
<link rel="preload" href="/assets/js/main.bd020950.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus">
<div><a href="#" class="skipToContent_OuoZ">Skip to main content</a></div><div class="announcementBar_axC9" role="banner"><div class="announcementBarPlaceholder_xYHE"></div><div class="announcementBarContent_6uhP">⭐️ If you like Apache Hudi, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/apache/hudi">GitHub</a>! ⭐</div><button type="button" class="clean-btn close announcementBarClose_A3A1" aria-label="Close"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav class="navbar navbar--fixed-top navbarWrapper_UIa0"><div class="navbar__inner"><img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=8f594acf-9b77-44fb-9475-3e82ead1910c" width="0" height="0" alt=""><img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.apache.org/matomo.php?idsite=47&amp;rec=1" width="0" height="0" alt=""><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo navbarLogo_Bz6n"><img src="/assets/images/hudi.png" alt="Apache Hudi" class="themedImage_TMUO themedImage--light_4Vu1"><img src="/assets/images/hudi.png" alt="Apache Hudi" class="themedImage_TMUO themedImage--dark_uzRr"></div></a><a class="navbar__item navbar__link" href="/docs/overview"><div class="labelWrapperDropdown_Mqbj">Docs</div></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" class="navbar__link downloadLinkDropdownHide_aDP3"><div class="labelWrapperDropdown_Mqbj">Learn<svg width="10" height="6" viewBox="0 0 10 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.5 1.25 5 4.75l-3.5-3.5" stroke="#1C1E21" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/talks"><div class="labelWrapperDropdown_Mqbj">Talks</div></a></li><li><a class="dropdown__link" href="/videos"><div class="labelWrapperDropdown_Mqbj">Video Guides</div></a></li><li><a class="dropdown__link" href="/docs/faq"><div class="labelWrapperDropdown_Mqbj">FAQ</div></a></li><li><a class="dropdown__link" href="/tech-specs"><div class="labelWrapperDropdown_Mqbj">Tech Specs</div></a></li><li><a class="dropdown__link" href="/tech-specs-1point0"><div class="labelWrapperDropdown_Mqbj">Tech Specs 1.0</div></a></li><li><a href="https://cwiki.apache.org/confluence/display/HUDI" target="_blank" rel="noopener noreferrer" class="dropdown__link"><span class="externalLink_AE3f">Technical Wiki<svg width="20" height="20" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.965 8.745 9.01 16.7M10.561 8.758l6.403-.013-.013 6.403" stroke="#0DB1F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><rect x="4.5" y="4.5" width="17" height="17" rx="2.5" stroke="#0DB1F9"></rect></svg></span></a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" class="navbar__link downloadLinkDropdownHide_aDP3"><div class="labelWrapperDropdown_Mqbj">Contribute<svg width="10" height="6" viewBox="0 0 10 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.5 1.25 5 4.75l-3.5-3.5" stroke="#1C1E21" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/contribute/how-to-contribute"><div class="labelWrapperDropdown_Mqbj">How to Contribute</div></a></li><li><a class="dropdown__link" href="/contribute/developer-setup"><div class="labelWrapperDropdown_Mqbj">Developer Setup</div></a></li><li><a class="dropdown__link" href="/contribute/rfc-process"><div class="labelWrapperDropdown_Mqbj">RFC Process</div></a></li><li><a class="dropdown__link" href="/contribute/report-security-issues"><div class="labelWrapperDropdown_Mqbj">Report Security Issues</div></a></li><li><a href="https://issues.apache.org/jira/projects/HUDI/summary" target="_blank" rel="noopener noreferrer" class="dropdown__link"><span class="externalLink_AE3f">Report Issues<svg width="20" height="20" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.965 8.745 9.01 16.7M10.561 8.758l6.403-.013-.013 6.403" stroke="#0DB1F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><rect x="4.5" y="4.5" width="17" height="17" rx="2.5" stroke="#0DB1F9"></rect></svg></span></a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" class="navbar__link downloadLinkDropdownHide_aDP3"><div class="labelWrapperDropdown_Mqbj">Community<svg width="10" height="6" viewBox="0 0 10 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.5 1.25 5 4.75l-3.5-3.5" stroke="#1C1E21" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/community/get-involved"><div class="labelWrapperDropdown_Mqbj">Get Involved</div></a></li><li><a class="dropdown__link" href="/community/syncs"><div class="labelWrapperDropdown_Mqbj">Community Syncs</div></a></li><li><a class="dropdown__link" href="/community/office_hours"><div class="labelWrapperDropdown_Mqbj">Office Hours</div></a></li><li><a class="dropdown__link" href="/community/team"><div class="labelWrapperDropdown_Mqbj">Team</div></a></li></ul></div><a class="navbar__item navbar__link" href="/blog"><div class="labelWrapperDropdown_Mqbj">Blog</div></a><a class="navbar__item navbar__link" href="/powered-by"><div class="labelWrapperDropdown_Mqbj">Who&#x27;s Using</div></a><a class="navbar__item navbar__link" href="/roadmap"><div class="labelWrapperDropdown_Mqbj">Roadmap</div></a><a class="navbar__item navbar__link" href="/releases/download"><div class="labelWrapperDropdown_Mqbj">Download</div></a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link downloadLinkDropdownHide_aDP3" href="/docs/0.12.2/overview"><div class="labelWrapperDropdown_Mqbj">0.12.2<svg width="10" height="6" viewBox="0 0 10 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.5 1.25 5 4.75l-3.5-3.5" stroke="#1C1E21" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/configurations"><div class="labelWrapperDropdown_Mqbj">Current</div></a></li><li><a class="dropdown__link" href="/docs/configurations"><div class="labelWrapperDropdown_Mqbj">0.14.1</div></a></li><li><a class="dropdown__link" href="/docs/0.14.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.14.0</div></a></li><li><a class="dropdown__link" href="/docs/0.13.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.13.1</div></a></li><li><a class="dropdown__link" href="/docs/0.13.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.13.0</div></a></li><li><a class="dropdown__link" href="/docs/0.12.3/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.3</div></a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/0.12.2/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.2</div></a></li><li><a class="dropdown__link" href="/docs/0.12.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.1</div></a></li><li><a class="dropdown__link" href="/docs/0.12.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.0</div></a></li><li><a class="dropdown__link" href="/docs/0.11.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.11.1</div></a></li><li><a class="dropdown__link" href="/docs/0.11.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.11.0</div></a></li><li><a class="dropdown__link" href="/docs/0.10.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.10.1</div></a></li><li><a class="dropdown__link" href="/docs/0.10.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.10.0</div></a></li><li><a class="dropdown__link" href="/docs/0.9.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.9.0</div></a></li><li><a class="dropdown__link" href="/docs/0.8.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.8.0</div></a></li><li><a class="dropdown__link" href="/docs/0.7.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.7.0</div></a></li><li><a class="dropdown__link" href="/docs/0.6.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.6.0</div></a></li><li><a class="dropdown__link" href="/docs/0.5.3/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.3</div></a></li><li><a class="dropdown__link" href="/docs/0.5.2/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.2</div></a></li><li><a class="dropdown__link" href="/docs/0.5.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.1</div></a></li><li><a class="dropdown__link" href="/docs/0.5.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.0</div></a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" class="navbar__link downloadLinkDropdownHide_aDP3"><div class="labelWrapperDropdown_Mqbj"><span><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" class="iconLanguage_zID8"><path fill="currentColor" d="M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"></path></svg><span>English</span></span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M14 6.457a6.842 6.842 0 0 0-7-6.02 6.843 6.843 0 0 0-7 6.02v1.085a6.843 6.843 0 0 0 7 6.02 6.843 6.843 0 0 0 7-6.02V6.457Zm-1.094 0h-2.625a9.92 9.92 0 0 0-.376-2.222 6.65 6.65 0 0 0 1.531-.875 5.25 5.25 0 0 1 1.444 3.097h.026Zm-8.032 0a8.479 8.479 0 0 1 .324-1.872 7.376 7.376 0 0 0 3.63 0c.175.61.284 1.239.325 1.872h-4.28Zm4.305 1.085a8.391 8.391 0 0 1-.324 1.873 7.464 7.464 0 0 0-3.658 0 8.479 8.479 0 0 1-.323-1.873h4.305Zm.35-4.375A10.342 10.342 0 0 0 8.75 1.75c.627.194 1.218.49 1.75.875a5.748 5.748 0 0 1-.998.577l.027-.035ZM7.254 1.54A8.75 8.75 0 0 1 8.46 3.552c-.48.11-.97.165-1.461.167-.492-.001-.982-.057-1.461-.167.308-.722.715-1.4 1.207-2.012h.508ZM4.498 3.202a5.748 5.748 0 0 1-.998-.577 6.029 6.029 0 0 1 1.75-.875c-.294.46-.546.947-.753 1.452Zm-1.873.15c.47.358.984.652 1.531.874A9.625 9.625 0 0 0 3.78 6.45H1.155a5.25 5.25 0 0 1 1.47-3.098ZM1.12 7.541h2.625c.038.753.164 1.5.376 2.223a6.649 6.649 0 0 0-1.531.875 5.25 5.25 0 0 1-1.47-3.098Zm3.377 3.255c.207.506.459.992.753 1.453a6.03 6.03 0 0 1-1.75-.875c.312-.226.646-.419.997-.578Zm2.25 1.663a8.594 8.594 0 0 1-1.208-2.013 6.501 6.501 0 0 1 2.922 0 8.54 8.54 0 0 1-1.207 2.013h-.508Zm2.755-1.663c.367.156.716.35 1.042.578a6.338 6.338 0 0 1-1.75.875c.275-.464.512-.95.708-1.453Zm1.873-.148a6.647 6.647 0 0 0-1.531-.875 9.45 9.45 0 0 0 .376-2.223h2.625a5.25 5.25 0 0 1-1.47 3.098Z" fill="#1C1E21"></path></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h14v14H0z"></path></clipPath></defs></svg></div></a><ul class="dropdown__menu"><li><a href="/docs/0.12.2/configurations" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active"><div class="labelWrapperDropdown_Mqbj">English</div></a></li><li><a href="/cn/docs/0.12.2/configurations" target="_self" rel="noopener noreferrer" class="dropdown__link"><div class="labelWrapperDropdown_Mqbj">Chinese</div></a></li></ul></div><a href="https://github.com/apache/hudi" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"><div class="labelWrapperDropdown_Mqbj"></div></a><a href="https://twitter.com/ApacheHudi" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-twitter-link" aria-label="Hudi Twitter Handle"><div class="labelWrapperDropdown_Mqbj"></div></a><a href="https://join.slack.com/t/apache-hudi/shared_invite/zt-2ggm1fub8-_yt4Reu9djwqqVRFC7X49g" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-slack-link" aria-label="Hudi Slack Channel"><div class="labelWrapperDropdown_Mqbj"></div></a><a href="https://www.youtube.com/channel/UCs7AhE0BWaEPZSChrBR-Muw" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-youtube-link" aria-label="Hudi YouTube Channel"><div class="labelWrapperDropdown_Mqbj"></div></a><a href="https://www.linkedin.com/company/apache-hudi/?viewAsMember=true" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-linkedin-link" aria-label="Hudi Linkedin Page"><div class="labelWrapperDropdown_Mqbj"></div></a><div class="searchBox_fBfG"><div role="button" class="searchButton_g9-U" aria-label="Search"><span class="searchText_RI6l">Search</span><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="6.864" cy="6.864" r="5.243" stroke="#1C1E21" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></circle><path d="m10.51 10.783 2.056 2.05" stroke="#1C1E21" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/assets/images/hudi.png" alt="Apache Hudi" class="themedImage_TMUO themedImage--light_4Vu1"><img src="/assets/images/hudi.png" alt="Apache Hudi" class="themedImage_TMUO themedImage--dark_uzRr"></div></a><button type="button" class="clean-btn navbar-sidebar__close"><svg viewBox="0 0 15 15" width="21" height="21"><g stroke="var(--ifm-color-emphasis-600)" stroke-width="1.2"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><div class="navbar-sidebar__items"><div class="navbar-sidebar__item menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/overview"><div class="labelWrapperDropdown_Mqbj">Docs</div></a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist"><div class="labelWrapperDropdown_Mqbj">Learn</div></a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist"><div class="labelWrapperDropdown_Mqbj">Contribute</div></a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist"><div class="labelWrapperDropdown_Mqbj">Community</div></a></li><li class="menu__list-item"><a class="menu__link" href="/blog"><div class="labelWrapperDropdown_Mqbj">Blog</div></a></li><li class="menu__list-item"><a class="menu__link" href="/powered-by"><div class="labelWrapperDropdown_Mqbj">Who&#x27;s Using</div></a></li><li class="menu__list-item"><a class="menu__link" href="/roadmap"><div class="labelWrapperDropdown_Mqbj">Roadmap</div></a></li><li class="menu__list-item"><a class="menu__link" href="/releases/download"><div class="labelWrapperDropdown_Mqbj">Download</div></a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist"><div class="labelWrapperDropdown_Mqbj">Versions</div></a><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/configurations"><div class="labelWrapperDropdown_Mqbj">Current</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/configurations"><div class="labelWrapperDropdown_Mqbj">0.14.1</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.14.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.14.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.13.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.13.1</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.13.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.13.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.12.3/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.3</div></a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/0.12.2/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.2</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.12.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.1</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.12.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.12.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.11.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.11.1</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.11.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.11.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.10.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.10.1</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.10.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.10.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.9.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.9.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.8.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.8.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.7.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.7.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.6.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.6.0</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.5.3/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.3</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.5.2/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.2</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.5.1/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.1</div></a></li><li class="menu__list-item"><a class="menu__link" href="/docs/0.5.0/configurations"><div class="labelWrapperDropdown_Mqbj">0.5.0</div></a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist"><div class="labelWrapperDropdown_Mqbj"><span><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" class="iconLanguage_zID8"><path fill="currentColor" d="M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"></path></svg><span>Languages</span></span></div></a></li><li class="menu__list-item"><a href="https://github.com/apache/hudi" target="_blank" rel="noopener noreferrer" class="menu__link header-github-link" aria-label="GitHub repository"><div class="labelWrapperDropdown_Mqbj"></div></a></li><li class="menu__list-item"><a href="https://twitter.com/ApacheHudi" target="_blank" rel="noopener noreferrer" class="menu__link header-twitter-link" aria-label="Hudi Twitter Handle"><div class="labelWrapperDropdown_Mqbj"></div></a></li><li class="menu__list-item"><a href="https://join.slack.com/t/apache-hudi/shared_invite/zt-2ggm1fub8-_yt4Reu9djwqqVRFC7X49g" target="_blank" rel="noopener noreferrer" class="menu__link header-slack-link" aria-label="Hudi Slack Channel"><div class="labelWrapperDropdown_Mqbj"></div></a></li><li class="menu__list-item"><a href="https://www.youtube.com/channel/UCs7AhE0BWaEPZSChrBR-Muw" target="_blank" rel="noopener noreferrer" class="menu__link header-youtube-link" aria-label="Hudi YouTube Channel"><div class="labelWrapperDropdown_Mqbj"></div></a></li><li class="menu__list-item"><a href="https://www.linkedin.com/company/apache-hudi/?viewAsMember=true" target="_blank" rel="noopener noreferrer" class="menu__link header-linkedin-link" aria-label="Hudi Linkedin Page"><div class="labelWrapperDropdown_Mqbj"></div></a></li></ul></div><div class="navbar-sidebar__item menu"><button type="button" class="clean-btn navbar-sidebar__back">← Back to main menu</button></div></div></div></nav><div class="main-wrapper docs-wrapper docs-doc-page"><div class="docPage_GMj9"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_i9tI" type="button"></button><aside class="docSidebarContainer_k0Pq"><div class="sidebar_a3j0"><nav class="menu thin-scrollbar menu_cyFh menuWithAnnouncementBar_+O1J"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.12.2/overview">Overview</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist hasHref_TwRn" href="/docs/0.12.2/quick-start-guide">Quick Start</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.12.2/quick-start-guide">Spark Guide</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.12.2/flink-quick-start-guide">Flink Guide</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.12.2/docker_demo">Docker Demo</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist hasHref_TwRn" href="/docs/0.12.2/timeline">Concepts</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist hasHref_TwRn" href="/docs/0.12.2/table_management">How To</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist hasHref_TwRn" href="/docs/0.12.2/migration_guide">Services</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active hasHref_TwRn" href="/docs/0.12.2/basic_configurations">Configurations</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.12.2/basic_configurations">Basic Configurations</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/0.12.2/configurations">All Configurations</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist hasHref_TwRn" href="/docs/0.12.2/query_engine_setup">Guides</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.12.2/use_cases">Use Cases</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.12.2/faq">FAQs</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.12.2/privacy">Privacy Policy</a></li></ul></nav></div></aside><main class="docMainContainer_Q970"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_zHA2"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->Apache Hudi<!-- --> <b>0.12.2</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/configurations">latest version</a></b> (<!-- -->0.14.1<!-- -->).</div></div><div class="docItemContainer_oiyr"><article><span class="theme-doc-version-badge badge badge--secondary">Version: <!-- -->0.12.2</span><div class="tocCollapsible_aw-L theme-doc-toc-mobile tocMobile_Tx6Y"><button type="button" class="clean-btn tocCollapsibleButton_zr6a">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>All Configurations</h1></header><p>This page covers the different ways of configuring your job to write/read Hudi tables. At a high level, you can control behaviour at few levels.</p><ul><li><a href="#SPARK_DATASOURCE"><strong>Spark Datasource Configs</strong></a>: These configs control the Hudi Spark Datasource, providing ability to define keys/partitioning, pick out the write operation, specify how to merge records or choosing query type to read.</li><li><a href="#FLINK_SQL"><strong>Flink Sql Configs</strong></a>: These configs control the Hudi Flink SQL source/sink connectors, providing ability to define record keys, pick out the write operation, specify how to merge records, enable/disable asynchronous compaction or choosing query type to read.</li><li><a href="#WRITE_CLIENT"><strong>Write Client Configs</strong></a>: Internally, the Hudi datasource uses a RDD based HoodieWriteClient API to actually perform writes to storage. These configs provide deep control over lower level aspects like file sizing, compression, parallelism, compaction, write schema, cleaning etc. Although Hudi provides sane defaults, from time-time these configs may need to be tweaked to optimize for specific workloads.</li><li><a href="#METRICS"><strong>Metrics Configs</strong></a>: These set of configs are used to enable monitoring and reporting of keyHudi stats and metrics.</li><li><a href="#RECORD_PAYLOAD"><strong>Record Payload Config</strong></a>: This is the lowest level of customization offered by Hudi. Record payloads define how to produce new values to upsert based on incoming new record and stored old record. Hudi provides default implementations such as OverwriteWithLatestAvroPayload which simply update table with the latest/last-written record. This can be overridden to a custom class extending HoodieRecordPayload class, on both datasource and WriteClient levels.</li><li><a href="#KAFKA_CONNECT"><strong>Kafka Connect Configs</strong></a>: These set of configs are used for Kafka Connect Sink Connector for writing Hudi Tables</li><li><a href="#AWS"><strong>Amazon Web Services Configs</strong></a>: Please fill in the description for Config Group Name: Amazon Web Services Configs</li></ul><h2 class="anchor anchorWithStickyNavbar_y2LR" id="externalized-config-file">Externalized Config File<a class="hash-link" href="#externalized-config-file" title="Direct link to heading"></a></h2><p>Instead of directly passing configuration settings to every Hudi job, you can also centrally set them in a configuration
file <code>hudi-default.conf</code>. By default, Hudi would load the configuration file under <code>/etc/hudi/conf</code> directory. You can
specify a different configuration directory location by setting the <code>HUDI_CONF_DIR</code> environment variable. This can be
useful for uniformly enforcing repeated configs (like Hive sync or write/index tuning), across your entire data lake.</p><h2 class="anchor anchorWithStickyNavbar_y2LR" id="SPARK_DATASOURCE">Spark Datasource Configs<a class="hash-link" href="#SPARK_DATASOURCE" title="Direct link to heading"></a></h2><p>These configs control the Hudi Spark Datasource, providing ability to define keys/partitioning, pick out the write operation, specify how to merge records or choosing query type to read.</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Read-Options">Read Options<a class="hash-link" href="#Read-Options" title="Direct link to heading"></a></h3><p>Options useful for reading tables via <code>read.format.option(...)</code></p><p><code>Config Class</code>: org.apache.hudi.DataSourceOptions.scala<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefileindexenable">hoodie.file.index.enable<a class="hash-link" href="#hoodiefileindexenable" title="Direct link to heading"></a></h4><p>Enables use of the spark file index implementation for Hudi, that speeds up listing of large tables.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ENABLE_HOODIE_FILE_INDEX</code><br>
<code>Deprecated Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadpaths">hoodie.datasource.read.paths<a class="hash-link" href="#hoodiedatasourcereadpaths" title="Direct link to heading"></a></h4><p>Comma separated list of file paths to read within a Hudi table.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: READ_PATHS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadincrfilters">hoodie.datasource.read.incr.filters<a class="hash-link" href="#hoodiedatasourcereadincrfilters" title="Direct link to heading"></a></h4><p>For use-cases like DeltaStreamer which reads from Hoodie Incremental table and applies opaque map functions, filters appearing late in the sequence of transformations cannot be automatically pushed down. This option allows setting filters directly on Hoodie Source.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: PUSH_DOWN_INCR_FILTERS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieenabledataskipping">hoodie.enable.data.skipping<a class="hash-link" href="#hoodieenabledataskipping" title="Direct link to heading"></a></h4><p>Enables data-skipping allowing queries to leverage indexes to reduce the search space by skipping over files<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ENABLE_DATA_SKIPPING</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="asofinstant">as.of.instant<a class="hash-link" href="#asofinstant" title="Direct link to heading"></a></h4><p>The query instant for time travel. Without specified this option, we query the latest snapshot.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TIME_TRAVEL_AS_OF_INSTANT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadschemauseendinstanttime">hoodie.datasource.read.schema.use.end.instanttime<a class="hash-link" href="#hoodiedatasourcereadschemauseendinstanttime" title="Direct link to heading"></a></h4><p>Uses end instant schema when incrementally fetched data to. Default: users latest instant schema.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INCREMENTAL_READ_SCHEMA_USE_END_INSTANTTIME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadincrpathglob">hoodie.datasource.read.incr.path.glob<a class="hash-link" href="#hoodiedatasourcereadincrpathglob" title="Direct link to heading"></a></h4><p>For the use-cases like users only want to incremental pull from certain partitions instead of the full table. This option allows using glob pattern to directly filter on path.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: INCR_PATH_GLOB</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadendinstanttime">hoodie.datasource.read.end.instanttime<a class="hash-link" href="#hoodiedatasourcereadendinstanttime" title="Direct link to heading"></a></h4><p>Instant time to limit incrementally fetched data to. New data written with an instant_time &lt;= END_INSTANTTIME are fetched out.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: END_INSTANTTIME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriteprecombinefield">hoodie.datasource.write.precombine.field<a class="hash-link" href="#hoodiedatasourcewriteprecombinefield" title="Direct link to heading"></a></h4><p>Field used in preCombining before actual write. When two records have the same key value, we will pick the one with the largest value for the precombine field, determined by Object.compareTo(..)<br>
<strong>Default Value</strong>: ts (Optional)<br>
<code>Config Param: READ_PRE_COMBINE_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcemergetype">hoodie.datasource.merge.type<a class="hash-link" href="#hoodiedatasourcemergetype" title="Direct link to heading"></a></h4><p>For Snapshot query on merge on read table, control whether we invoke the record payload implementation to merge (payload_combine) or skip merging altogetherskip_merge<br>
<strong>Default Value</strong>: payload_combine (Optional)<br>
<code>Config Param: REALTIME_MERGE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadextractpartitionvaluesfrompath">hoodie.datasource.read.extract.partition.values.from.path<a class="hash-link" href="#hoodiedatasourcereadextractpartitionvaluesfrompath" title="Direct link to heading"></a></h4><p>When set to true, values for partition columns (partition values) will be extracted from physical partition path (default Spark behavior). When set to false partition values will be read from the data file (in Hudi partition columns are persisted by default). This config is a fallback allowing to preserve existing behavior, and should not be used otherwise.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: EXTRACT_PARTITION_VALUES_FROM_PARTITION_PATH</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieschemaonreadenable">hoodie.schema.on.read.enable<a class="hash-link" href="#hoodieschemaonreadenable" title="Direct link to heading"></a></h4><p>Enables support for Schema Evolution feature<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: SCHEMA_EVOLUTION_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadbegininstanttime">hoodie.datasource.read.begin.instanttime<a class="hash-link" href="#hoodiedatasourcereadbegininstanttime" title="Direct link to heading"></a></h4><p>Instant time to start incrementally pulling data from. The instanttime here need not necessarily correspond to an instant on the timeline. New data written with an instant_time &gt; BEGIN_INSTANTTIME are fetched out. For e.g: ‘20170901080000’ will get all new data written after Sep 1, 2017 08:00AM.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BEGIN_INSTANTTIME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcereadincrfallbackfulltablescanenable">hoodie.datasource.read.incr.fallback.fulltablescan.enable<a class="hash-link" href="#hoodiedatasourcereadincrfallbackfulltablescanenable" title="Direct link to heading"></a></h4><p>When doing an incremental query whether we should fall back to full table scans if file does not exist.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INCREMENTAL_FALLBACK_TO_FULL_TABLE_SCAN_FOR_NON_EXISTING_FILES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcequerytype">hoodie.datasource.query.type<a class="hash-link" href="#hoodiedatasourcequerytype" title="Direct link to heading"></a></h4><p>Whether data needs to be read, in incremental mode (new data since an instantTime) (or) Read Optimized mode (obtain latest view, based on base files) (or) Snapshot mode (obtain latest view, by merging base and (if any) log files)<br>
<strong>Default Value</strong>: snapshot (Optional)<br>
<code>Config Param: QUERY_TYPE</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Write-Options">Write Options<a class="hash-link" href="#Write-Options" title="Direct link to heading"></a></h3><p>You can pass down any of the WriteClient level configs directly using <code>options()</code> or <code>option(k,v)</code> methods.</p><div class="codeBlockContainer_J+bg language-java theme-code-block"><div class="codeBlockContent_csEI java"><pre tabindex="0" class="prism-code language-java codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">inputDF.write()</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.format(&quot;org.apache.hudi&quot;)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.options(clientOpts) // any of the Hudi client opts can be passed in as well</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.option(DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY(), &quot;_row_key&quot;)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.option(DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY(), &quot;partition&quot;)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.option(DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY(), &quot;timestamp&quot;)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.option(HoodieWriteConfig.TABLE_NAME, tableName)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.mode(SaveMode.Append)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">.save(basePath);</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Options useful for writing tables via <code>write.format.option(...)</code></p><p><code>Config Class</code>: org.apache.hudi.DataSourceOptions.scala<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringasyncenabled">hoodie.clustering.async.enabled<a class="hash-link" href="#hoodieclusteringasyncenabled" title="Direct link to heading"></a></h4><p>Enable running of clustering service, asynchronously as inserts happen on the table.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASYNC_CLUSTERING_ENABLE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriteoperation">hoodie.datasource.write.operation<a class="hash-link" href="#hoodiedatasourcewriteoperation" title="Direct link to heading"></a></h4><p>Whether to do upsert, insert or bulkinsert for the write operation. Use bulkinsert to load new data into a table, and there on use upsert/insert. bulk insert uses a disk based write path to scale to load large inputs without need to cache it.<br>
<strong>Default Value</strong>: upsert (Optional)<br>
<code>Config Param: OPERATION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritereconcileschema">hoodie.datasource.write.reconcile.schema<a class="hash-link" href="#hoodiedatasourcewritereconcileschema" title="Direct link to heading"></a></h4><p>When a new batch of write has records with old schema, but latest table schema got evolved, this config will upgrade the records to leverage latest table schema(default values will be injected to missing fields). If not, the write batch would fail.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: RECONCILE_SCHEMA</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriterecordkeyfield">hoodie.datasource.write.recordkey.field<a class="hash-link" href="#hoodiedatasourcewriterecordkeyfield" title="Direct link to heading"></a></h4><p>Record key field. Value to be used as the <code>recordKey</code> component of <code>HoodieKey</code>.
Actual value will be obtained by invoking .toString() on the field value. Nested fields can be specified using
the dot notation eg: <code>a.b.c</code><br>
<strong>Default Value</strong>: uuid (Optional)<br>
<code>Config Param: RECORDKEY_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncskip_ro_suffix">hoodie.datasource.hive_sync.skip_ro_suffix<a class="hash-link" href="#hoodiedatasourcehive_syncskip_ro_suffix" title="Direct link to heading"></a></h4><p>Skip the _ro suffix for Read optimized table, when registering<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SKIP_RO_SUFFIX_FOR_READ_OPTIMIZED_TABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathurlencode">hoodie.datasource.write.partitionpath.urlencode<a class="hash-link" href="#hoodiedatasourcewritepartitionpathurlencode" title="Direct link to heading"></a></h4><p>Should we url encode the partition path value, before creating the folder structure.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: URL_ENCODE_PARTITIONING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncpartition_extractor_class">hoodie.datasource.hive_sync.partition_extractor_class<a class="hash-link" href="#hoodiedatasourcehive_syncpartition_extractor_class" title="Direct link to heading"></a></h4><p>Class which implements PartitionValueExtractor to extract the partition values, default &#x27;org.apache.hudi.hive.MultiPartKeysValueExtractor&#x27;.<br>
<strong>Default Value</strong>: org.apache.hudi.hive.MultiPartKeysValueExtractor (Optional)<br>
<code>Config Param: HIVE_PARTITION_EXTRACTOR_CLASS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncserde_properties">hoodie.datasource.hive_sync.serde_properties<a class="hash-link" href="#hoodiedatasourcehive_syncserde_properties" title="Direct link to heading"></a></h4><p>Serde properties to hive table.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_TABLE_SERDE_PROPERTIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncsync_comment">hoodie.datasource.hive_sync.sync_comment<a class="hash-link" href="#hoodiedatasourcehive_syncsync_comment" title="Direct link to heading"></a></h4><p>Whether to sync the table column comments while syncing the table.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_COMMENT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncpassword">hoodie.datasource.hive_sync.password<a class="hash-link" href="#hoodiedatasourcehive_syncpassword" title="Direct link to heading"></a></h4><p>hive password to use<br>
<strong>Default Value</strong>: hive (Optional)<br>
<code>Config Param: HIVE_PASS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratorconsistentlogicaltimestampenabled">hoodie.datasource.write.keygenerator.consistent.logical.timestamp.enabled<a class="hash-link" href="#hoodiedatasourcewritekeygeneratorconsistentlogicaltimestampenabled" title="Direct link to heading"></a></h4><p>When set to true, consistent value will be generated for a logical timestamp type column, like timestamp-millis and timestamp-micros, irrespective of whether row-writer is enabled. Disabled by default so as not to break the pipeline that deploy either fully row-writer path or non row-writer path. For example, if it is kept disabled then record key of timestamp type with value <code>2016-12-29 09:54:00</code> will be written as timestamp <code>2016-12-29 09:54:00.0</code> in row-writer path, while it will be written as long value <code>1483023240000000</code> in non row-writer path. If enabled, then the timestamp value will be written in both the cases.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: KEYGENERATOR_CONSISTENT_LOGICAL_TIMESTAMP_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncsupport_timestamp">hoodie.datasource.hive_sync.support_timestamp<a class="hash-link" href="#hoodiedatasourcehive_syncsupport_timestamp" title="Direct link to heading"></a></h4><p>‘INT64’ with original type TIMESTAMP_MICROS is converted to hive ‘timestamp’ type. Disabled by default for backward compatibility.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SUPPORT_TIMESTAMP_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_synccreate_managed_table">hoodie.datasource.hive_sync.create_managed_table<a class="hash-link" href="#hoodiedatasourcehive_synccreate_managed_table" title="Direct link to heading"></a></h4><p>Whether to sync the table as managed table.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_CREATE_MANAGED_TABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringinline">hoodie.clustering.inline<a class="hash-link" href="#hoodieclusteringinline" title="Direct link to heading"></a></h4><p>Turn on inline clustering - clustering will be run after each write operation is complete<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INLINE_CLUSTERING_ENABLE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcecompactionasyncenable">hoodie.datasource.compaction.async.enable<a class="hash-link" href="#hoodiedatasourcecompactionasyncenable" title="Direct link to heading"></a></h4><p>Controls whether async compaction should be turned on for MOR table writing.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ASYNC_COMPACT_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcemetasyncenable">hoodie.datasource.meta.sync.enable<a class="hash-link" href="#hoodiedatasourcemetasyncenable" title="Direct link to heading"></a></h4><p>Enable Syncing the Hudi Table with an external meta store or data catalog.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: META_SYNC_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritestreamingignorefailedbatch">hoodie.datasource.write.streaming.ignore.failed.batch<a class="hash-link" href="#hoodiedatasourcewritestreamingignorefailedbatch" title="Direct link to heading"></a></h4><p>Config to indicate whether to ignore any non exception error (e.g. writestatus error) within a streaming microbatch<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: STREAMING_IGNORE_FAILED_BATCH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriteprecombinefield-1">hoodie.datasource.write.precombine.field<a class="hash-link" href="#hoodiedatasourcewriteprecombinefield-1" title="Direct link to heading"></a></h4><p>Field used in preCombining before actual write. When two records have the same key value, we will pick the one with the largest value for the precombine field, determined by Object.compareTo(..)<br>
<strong>Default Value</strong>: ts (Optional)<br>
<code>Config Param: PRECOMBINE_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncusername">hoodie.datasource.hive_sync.username<a class="hash-link" href="#hoodiedatasourcehive_syncusername" title="Direct link to heading"></a></h4><p>hive user name to use<br>
<strong>Default Value</strong>: hive (Optional)<br>
<code>Config Param: HIVE_USER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathfield">hoodie.datasource.write.partitionpath.field<a class="hash-link" href="#hoodiedatasourcewritepartitionpathfield" title="Direct link to heading"></a></h4><p>Partition path field. Value to be used at the partitionPath component of HoodieKey. Actual value ontained by invoking .toString()<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITIONPATH_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritestreamingretrycount">hoodie.datasource.write.streaming.retry.count<a class="hash-link" href="#hoodiedatasourcewritestreamingretrycount" title="Direct link to heading"></a></h4><p>Config to indicate how many times streaming job should retry for a failed micro batch.<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: STREAMING_RETRY_CNT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncpartition_fields">hoodie.datasource.hive_sync.partition_fields<a class="hash-link" href="#hoodiedatasourcehive_syncpartition_fields" title="Direct link to heading"></a></h4><p>Field in the table to use for determining hive partition columns.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: HIVE_PARTITION_FIELDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncsync_as_datasource">hoodie.datasource.hive_sync.sync_as_datasource<a class="hash-link" href="#hoodiedatasourcehive_syncsync_as_datasource" title="Direct link to heading"></a></h4><br>**Default Value**: true (Optional)<br>`Config Param: HIVE_SYNC_AS_DATA_SOURCE_TABLE`<br></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiesqlinsertmode">hoodie.sql.insert.mode<a class="hash-link" href="#hoodiesqlinsertmode" title="Direct link to heading"></a></h4><p>Insert mode when insert data to pk-table. The optional modes are: upsert, strict and non-strict.For upsert mode, insert statement do the upsert operation for the pk-table which will update the duplicate record.For strict mode, insert statement will keep the primary key uniqueness constraint which do not allow duplicate record.While for non-strict mode, hudi just do the insert operation for the pk-table.<br>
<strong>Default Value</strong>: upsert (Optional)<br>
<code>Config Param: SQL_INSERT_MODE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncuse_jdbc">hoodie.datasource.hive_sync.use_jdbc<a class="hash-link" href="#hoodiedatasourcehive_syncuse_jdbc" title="Direct link to heading"></a></h4><p>Use JDBC when hive synchronization is enabled<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: HIVE_USE_JDBC</code><br>
<code>Deprecated Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetasyncclienttoolclass">hoodie.meta.sync.client.tool.class<a class="hash-link" href="#hoodiemetasyncclienttoolclass" title="Direct link to heading"></a></h4><p>Sync tool class name used to sync to metastore. Defaults to Hive.<br>
<strong>Default Value</strong>: org.apache.hudi.hive.HiveSyncTool (Optional)<br>
<code>Config Param: META_SYNC_CLIENT_TOOL_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratorclass">hoodie.datasource.write.keygenerator.class<a class="hash-link" href="#hoodiedatasourcewritekeygeneratorclass" title="Direct link to heading"></a></h4><p>Key generator class, that implements <code>org.apache.hudi.keygen.KeyGenerator</code><br>
<strong>Default Value</strong>: org.apache.hudi.keygen.SimpleKeyGenerator (Optional)<br>
<code>Config Param: KEYGENERATOR_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepayloadclass">hoodie.datasource.write.payload.class<a class="hash-link" href="#hoodiedatasourcewritepayloadclass" title="Direct link to heading"></a></h4><p>Payload class used. Override this, if you like to roll your own merge logic, when upserting/inserting. This will render any value set for PRECOMBINE_FIELD_OPT_VAL in-effective<br>
<strong>Default Value</strong>: org.apache.hudi.common.model.OverwriteWithLatestAvroPayload (Optional)<br>
<code>Config Param: PAYLOAD_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_synctable_properties">hoodie.datasource.hive_sync.table_properties<a class="hash-link" href="#hoodiedatasourcehive_synctable_properties" title="Direct link to heading"></a></h4><p>Additional properties to store with table.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_TABLE_PROPERTIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncjdbcurl">hoodie.datasource.hive_sync.jdbcurl<a class="hash-link" href="#hoodiedatasourcehive_syncjdbcurl" title="Direct link to heading"></a></h4><p>Hive metastore url<br>
<strong>Default Value</strong>: jdbc:hive2://localhost:10000 (Optional)<br>
<code>Config Param: HIVE_URL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncbatch_num">hoodie.datasource.hive_sync.batch_num<a class="hash-link" href="#hoodiedatasourcehive_syncbatch_num" title="Direct link to heading"></a></h4><p>The number of partitions one batch when synchronous partitions to hive.<br>
<strong>Default Value</strong>: 1000 (Optional)<br>
<code>Config Param: HIVE_BATCH_SYNC_PARTITION_NUM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncassume_date_partitioning">hoodie.datasource.hive_sync.assume_date_partitioning<a class="hash-link" href="#hoodiedatasourcehive_syncassume_date_partitioning" title="Direct link to heading"></a></h4><p>Assume partitioning is yyyy/MM/dd<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_ASSUME_DATE_PARTITION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncbucket_sync">hoodie.datasource.hive_sync.bucket_sync<a class="hash-link" href="#hoodiedatasourcehive_syncbucket_sync" title="Direct link to heading"></a></h4><p>Whether sync hive metastore bucket specification when using bucket index.The specification is &#x27;CLUSTERED BY (trace_id) SORTED BY (trace_id ASC) INTO 65536 BUCKETS&#x27;<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_BUCKET_SYNC</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncauto_create_database">hoodie.datasource.hive_sync.auto_create_database<a class="hash-link" href="#hoodiedatasourcehive_syncauto_create_database" title="Direct link to heading"></a></h4><p>Auto create hive database if does not exists<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: HIVE_AUTO_CREATE_DATABASE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncdatabase">hoodie.datasource.hive_sync.database<a class="hash-link" href="#hoodiedatasourcehive_syncdatabase" title="Direct link to heading"></a></h4><p>The name of the destination database that we should sync the hudi table to.<br>
<strong>Default Value</strong>: default (Optional)<br>
<code>Config Param: HIVE_DATABASE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritestreamingretryintervalms">hoodie.datasource.write.streaming.retry.interval.ms<a class="hash-link" href="#hoodiedatasourcewritestreamingretryintervalms" title="Direct link to heading"></a></h4><p> Config to indicate how long (by millisecond) before a retry should issued for failed microbatch<br>
<strong>Default Value</strong>: 2000 (Optional)<br>
<code>Config Param: STREAMING_RETRY_INTERVAL_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiesqlbulkinsertenable">hoodie.sql.bulk.insert.enable<a class="hash-link" href="#hoodiesqlbulkinsertenable" title="Direct link to heading"></a></h4><p>When set to true, the sql insert statement will use bulk insert.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: SQL_ENABLE_BULK_INSERT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritecommitmetakeyprefix">hoodie.datasource.write.commitmeta.key.prefix<a class="hash-link" href="#hoodiedatasourcewritecommitmetakeyprefix" title="Direct link to heading"></a></h4><p>Option keys beginning with this prefix, are automatically added to the commit/deltacommit metadata. This is useful to store checkpointing information, in a consistent way with the hudi timeline<br>
<strong>Default Value</strong>: _ (Optional)<br>
<code>Config Param: COMMIT_METADATA_KEYPREFIX</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritedroppartitioncolumns">hoodie.datasource.write.drop.partition.columns<a class="hash-link" href="#hoodiedatasourcewritedroppartitioncolumns" title="Direct link to heading"></a></h4><p>When set to true, will not write the partition columns into hudi. By default, false.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: DROP_PARTITION_COLUMNS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncenable">hoodie.datasource.hive_sync.enable<a class="hash-link" href="#hoodiedatasourcehive_syncenable" title="Direct link to heading"></a></h4><p>When set to true, register/sync the table to Apache Hive metastore.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_synctable">hoodie.datasource.hive_sync.table<a class="hash-link" href="#hoodiedatasourcehive_synctable" title="Direct link to heading"></a></h4><p>The name of the destination table that we should sync the hudi table to.<br>
<strong>Default Value</strong>: unknown (Optional)<br>
<code>Config Param: HIVE_TABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncignore_exceptions">hoodie.datasource.hive_sync.ignore_exceptions<a class="hash-link" href="#hoodiedatasourcehive_syncignore_exceptions" title="Direct link to heading"></a></h4><p>Ignore exceptions when syncing with Hive.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_IGNORE_EXCEPTIONS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncuse_pre_apache_input_format">hoodie.datasource.hive_sync.use_pre_apache_input_format<a class="hash-link" href="#hoodiedatasourcehive_syncuse_pre_apache_input_format" title="Direct link to heading"></a></h4><p>Flag to choose InputFormat under com.uber.hoodie package instead of org.apache.hudi package. Use this when you are in the process of migrating from com.uber.hoodie to org.apache.hudi. Stop using this after you migrated the table definition to org.apache.hudi input format<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_USE_PRE_APACHE_INPUT_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritetabletype">hoodie.datasource.write.table.type<a class="hash-link" href="#hoodiedatasourcewritetabletype" title="Direct link to heading"></a></h4><p>The table type for the underlying data, for this write. This can’t change between writes.<br>
<strong>Default Value</strong>: COPY_ON_WRITE (Optional)<br>
<code>Config Param: TABLE_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriterowwriterenable">hoodie.datasource.write.row.writer.enable<a class="hash-link" href="#hoodiedatasourcewriterowwriterenable" title="Direct link to heading"></a></h4><p>When set to true, will perform write operations directly using the spark native <code>Row</code> representation, avoiding any additional conversion costs.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ENABLE_ROW_WRITER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritehive_style_partitioning">hoodie.datasource.write.hive_style_partitioning<a class="hash-link" href="#hoodiedatasourcewritehive_style_partitioning" title="Direct link to heading"></a></h4><p>Flag to indicate whether to use Hive style partitioning.
If set true, the names of partition folders follow &lt;partition_column_name&gt;=&lt;partition_value&gt; format.
By default false (the names of partition folders are only partition values)<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_STYLE_PARTITIONING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcemeta_syncconditionsync">hoodie.datasource.meta_sync.condition.sync<a class="hash-link" href="#hoodiedatasourcemeta_syncconditionsync" title="Direct link to heading"></a></h4><p>If true, only sync on conditions like schema change or partition change.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_CONDITIONAL_SYNC</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncmode">hoodie.datasource.hive_sync.mode<a class="hash-link" href="#hoodiedatasourcehive_syncmode" title="Direct link to heading"></a></h4><p>Mode to choose for Hive ops. Valid values are hms, jdbc and hiveql.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_SYNC_MODE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritetablename">hoodie.datasource.write.table.name<a class="hash-link" href="#hoodiedatasourcewritetablename" title="Direct link to heading"></a></h4><p>Table name for the datasource write. Also used to register the table into meta stores.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TABLE_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncbase_file_format">hoodie.datasource.hive_sync.base_file_format<a class="hash-link" href="#hoodiedatasourcehive_syncbase_file_format" title="Direct link to heading"></a></h4><p>Base file format for the sync.<br>
<strong>Default Value</strong>: PARQUET (Optional)<br>
<code>Config Param: HIVE_BASE_FILE_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedeltastreamersourcekafkavaluedeserializerclass">hoodie.deltastreamer.source.kafka.value.deserializer.class<a class="hash-link" href="#hoodiedeltastreamersourcekafkavaluedeserializerclass" title="Direct link to heading"></a></h4><p>This class is used by kafka client to deserialize the records<br>
<strong>Default Value</strong>: io.confluent.kafka.serializers.KafkaAvroDeserializer (Optional)<br>
<code>Config Param: KAFKA_AVRO_VALUE_DESERIALIZER_CLASS</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcehive_syncmetastoreuris">hoodie.datasource.hive_sync.metastore.uris<a class="hash-link" href="#hoodiedatasourcehive_syncmetastoreuris" title="Direct link to heading"></a></h4><p>Hive metastore url<br>
<strong>Default Value</strong>: thrift://localhost:9083 (Optional)<br>
<code>Config Param: METASTORE_URIS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriteinsertdropduplicates">hoodie.datasource.write.insert.drop.duplicates<a class="hash-link" href="#hoodiedatasourcewriteinsertdropduplicates" title="Direct link to heading"></a></h4><p>If set to true, filters out all duplicate records from incoming dataframe, during insert operations.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INSERT_DROP_DUPS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionstodelete">hoodie.datasource.write.partitions.to.delete<a class="hash-link" href="#hoodiedatasourcewritepartitionstodelete" title="Direct link to heading"></a></h4><p>Comma separated list of partitions to delete<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITIONS_TO_DELETE</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="PreCommit-Validator-Configurations">PreCommit Validator Configurations<a class="hash-link" href="#PreCommit-Validator-Configurations" title="Direct link to heading"></a></h3><p>The following set of configurations help validate new data before commits.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodiePreCommitValidatorConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieprecommitvalidatorssinglevaluesqlqueries">hoodie.precommit.validators.single.value.sql.queries<a class="hash-link" href="#hoodieprecommitvalidatorssinglevaluesqlqueries" title="Direct link to heading"></a></h4><p>Spark SQL queries to run on table before committing new data to validate state after commit.Multiple queries separated by &#x27;;&#x27; delimiter are supported.Expected result is included as part of query separated by &#x27;#&#x27;. Example query: &#x27;query1#result1:query2#result2&#x27;Note \&lt;TABLE_NAME<!-- -->&gt;<!-- --> variable is expected to be present in query.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: SINGLE_VALUE_SQL_QUERIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieprecommitvalidatorsequalitysqlqueries">hoodie.precommit.validators.equality.sql.queries<a class="hash-link" href="#hoodieprecommitvalidatorsequalitysqlqueries" title="Direct link to heading"></a></h4><p>Spark SQL queries to run on table before committing new data to validate state before and after commit. Multiple queries separated by &#x27;;&#x27; delimiter are supported. Example: &quot;select count(*) from \&lt;TABLE_NAME<!-- -->&gt;<!-- --> Note \&lt;TABLE_NAME<!-- -->&gt;<!-- --> is replaced by table state before and after commit.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: EQUALITY_SQL_QUERIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieprecommitvalidators">hoodie.precommit.validators<a class="hash-link" href="#hoodieprecommitvalidators" title="Direct link to heading"></a></h4><p>Comma separated list of class names that can be invoked to validate commit<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: VALIDATOR_CLASS_NAMES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieprecommitvalidatorsinequalitysqlqueries">hoodie.precommit.validators.inequality.sql.queries<a class="hash-link" href="#hoodieprecommitvalidatorsinequalitysqlqueries" title="Direct link to heading"></a></h4><p>Spark SQL queries to run on table before committing new data to validate state before and after commit.Multiple queries separated by &#x27;;&#x27; delimiter are supported.Example query: &#x27;select count(*) from \&lt;TABLE_NAME<!-- -->&gt;<!-- --> where col=null&#x27;Note \&lt;TABLE_NAME<!-- -->&gt;<!-- --> variable is expected to be present in query.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: INEQUALITY_SQL_QUERIES</code><br></p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_y2LR" id="FLINK_SQL">Flink Sql Configs<a class="hash-link" href="#FLINK_SQL" title="Direct link to heading"></a></h2><p>These configs control the Hudi Flink SQL source/sink connectors, providing ability to define record keys, pick out the write operation, specify how to merge records, enable/disable asynchronous compaction or choosing query type to read.</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Flink-Options">Flink Options<a class="hash-link" href="#Flink-Options" title="Direct link to heading"></a></h3><p>Flink jobs using the SQL can be configured through the options in WITH clause. The actual datasource level configs are listed below.</p><p><code>Config Class</code>: org.apache.hudi.configuration.FlinkOptions<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactiontriggerstrategy">compaction.trigger.strategy<a class="hash-link" href="#compactiontriggerstrategy" title="Direct link to heading"></a></h4><p>Strategy to trigger compaction, options are &#x27;num_commits&#x27;: trigger compaction when reach N delta commits;
&#x27;time_elapsed&#x27;: trigger compaction when time elapsed <!-- -->&gt;<!-- --> N seconds since last compaction;
&#x27;num_and_time&#x27;: trigger compaction when both NUM_COMMITS and TIME_ELAPSED are satisfied;
&#x27;num_or_time&#x27;: trigger compaction when NUM_COMMITS or TIME_ELAPSED is satisfied.
Default is &#x27;num_commits&#x27;<br>
<strong>Default Value</strong>: num_commits (Optional)<br>
<code>Config Param: COMPACTION_TRIGGER_STRATEGY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="indexstatettl">index.state.ttl<a class="hash-link" href="#indexstatettl" title="Direct link to heading"></a></h4><p>Index state ttl in days, default stores the index permanently<br>
<strong>Default Value</strong>: 0.0 (Optional)<br>
<code>Config Param: INDEX_STATE_TTL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncserde_properties">hive_sync.serde_properties<a class="hash-link" href="#hive_syncserde_properties" title="Direct link to heading"></a></h4><p>Serde properties to hive table, the data format is k1=v1
k2=v2<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_SYNC_TABLE_SERDE_PROPERTIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_synctable">hive_sync.table<a class="hash-link" href="#hive_synctable" title="Direct link to heading"></a></h4><p>Table name for hive sync, default &#x27;unknown&#x27;<br>
<strong>Default Value</strong>: unknown (Optional)<br>
<code>Config Param: HIVE_SYNC_TABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writepayloadclass">write.payload.class<a class="hash-link" href="#writepayloadclass" title="Direct link to heading"></a></h4><p>Payload class used. Override this, if you like to roll your own merge logic, when upserting/inserting.
This will render any value set for the option in-effective<br>
<strong>Default Value</strong>: org.apache.hudi.common.model.OverwriteWithLatestAvroPayload (Optional)<br>
<code>Config Param: PAYLOAD_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactiontasks">compaction.tasks<a class="hash-link" href="#compactiontasks" title="Direct link to heading"></a></h4><p>Parallelism of tasks that do actual compaction, default is 4<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: COMPACTION_TASKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritehive_style_partitioning-1">hoodie.datasource.write.hive_style_partitioning<a class="hash-link" href="#hoodiedatasourcewritehive_style_partitioning-1" title="Direct link to heading"></a></h4><p>Whether to use Hive style partitioning.
If set true, the names of partition folders follow <!-- -->&lt;<!-- -->partition_column_name<!-- -->&gt;<!-- -->=<!-- -->&lt;<!-- -->partition_value<!-- -->&gt;<!-- --> format.
By default false (the names of partition folders are only partition values)<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_STYLE_PARTITIONING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="tabletype">table.type<a class="hash-link" href="#tabletype" title="Direct link to heading"></a></h4><p>Type of table to write. COPY_ON_WRITE (or) MERGE_ON_READ<br>
<strong>Default Value</strong>: COPY_ON_WRITE (Optional)<br>
<code>Config Param: TABLE_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncauto_create_db">hive_sync.auto_create_db<a class="hash-link" href="#hive_syncauto_create_db" title="Direct link to heading"></a></h4><p>Auto create hive database if it does not exists, default true<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: HIVE_SYNC_AUTO_CREATE_DB</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactiontimeoutseconds">compaction.timeout.seconds<a class="hash-link" href="#compactiontimeoutseconds" title="Direct link to heading"></a></h4><p>Max timeout time in seconds for online compaction to rollback, default 20 minutes<br>
<strong>Default Value</strong>: 1200 (Optional)<br>
<code>Config Param: COMPACTION_TIMEOUT_SECONDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncusername">hive_sync.username<a class="hash-link" href="#hive_syncusername" title="Direct link to heading"></a></h4><p>Username for hive sync, default &#x27;hive&#x27;<br>
<strong>Default Value</strong>: hive (Optional)<br>
<code>Config Param: HIVE_SYNC_USERNAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writesortmemory">write.sort.memory<a class="hash-link" href="#writesortmemory" title="Direct link to heading"></a></h4><p>Sort memory in MB, default 128MB<br>
<strong>Default Value</strong>: 128 (Optional)<br>
<code>Config Param: WRITE_SORT_MEMORY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writebulk_insertshuffle_input">write.bulk_insert.shuffle_input<a class="hash-link" href="#writebulk_insertshuffle_input" title="Direct link to heading"></a></h4><p>Whether to shuffle the inputs by specific fields for bulk insert tasks, default true<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: WRITE_BULK_INSERT_SHUFFLE_INPUT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeretrytimes">write.retry.times<a class="hash-link" href="#writeretrytimes" title="Direct link to heading"></a></h4><p>Flag to indicate how many times streaming job should retry for a failed checkpoint batch.
By default 3<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: RETRY_TIMES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="metadataenabled">metadata.enabled<a class="hash-link" href="#metadataenabled" title="Direct link to heading"></a></h4><p>Enable the internal metadata table which serves table metadata like level file listings, default disabled<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: METADATA_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeparquetmaxfilesize">write.parquet.max.file.size<a class="hash-link" href="#writeparquetmaxfilesize" title="Direct link to heading"></a></h4><p>Target size for parquet files produced by Hudi write phases. For DFS, this needs to be aligned with the underlying filesystem block size for optimal performance.<br>
<strong>Default Value</strong>: 120 (Optional)<br>
<code>Config Param: WRITE_PARQUET_MAX_FILE_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategydaybasedskipfromlatestpartitions">clustering.plan.strategy.daybased.skipfromlatest.partitions<a class="hash-link" href="#clusteringplanstrategydaybasedskipfromlatestpartitions" title="Direct link to heading"></a></h4><p>Number of partitions to skip from latest when choosing partitions to create ClusteringPlan<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: CLUSTERING_PLAN_STRATEGY_SKIP_PARTITIONS_FROM_LATEST</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebucketindexhashfield">hoodie.bucket.index.hash.field<a class="hash-link" href="#hoodiebucketindexhashfield" title="Direct link to heading"></a></h4><p>Index key field. Value to be used as hashing to find the bucket ID. Should be a subset of or equal to the recordKey fields.
Actual value will be obtained by invoking .toString() on the field value. Nested fields can be specified using the dot notation eg: <code>a.b.c</code><br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: INDEX_KEY_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebucketindexnumbuckets">hoodie.bucket.index.num.buckets<a class="hash-link" href="#hoodiebucketindexnumbuckets" title="Direct link to heading"></a></h4><p>Hudi bucket number per partition. Only affected if using Hudi bucket index.<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: BUCKET_INDEX_NUM_BUCKETS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncmode">hive_sync.mode<a class="hash-link" href="#hive_syncmode" title="Direct link to heading"></a></h4><p>Mode to choose for Hive ops. Valid values are hms, jdbc and hiveql, default &#x27;jdbc&#x27;<br>
<strong>Default Value</strong>: jdbc (Optional)<br>
<code>Config Param: HIVE_SYNC_MODE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeretryintervalms">write.retry.interval.ms<a class="hash-link" href="#writeretryintervalms" title="Direct link to heading"></a></h4><p>Flag to indicate how long (by millisecond) before a retry should issued for failed checkpoint batch.
By default 2000 and it will be doubled by every retry<br>
<strong>Default Value</strong>: 2000 (Optional)<br>
<code>Config Param: RETRY_INTERVAL_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writepartitionformat">write.partition.format<a class="hash-link" href="#writepartitionformat" title="Direct link to heading"></a></h4><p>Partition path format, only valid when &#x27;write.datetime.partitioning&#x27; is true, default is:
1) &#x27;yyyyMMddHH&#x27; for timestamp(3) WITHOUT TIME ZONE, LONG, FLOAT, DOUBLE, DECIMAL;
2) &#x27;yyyyMMdd&#x27; for DATE and INT.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringasyncenabled">clustering.async.enabled<a class="hash-link" href="#clusteringasyncenabled" title="Direct link to heading"></a></h4><p>Async Clustering, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: CLUSTERING_ASYNC_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanpartitionfiltermode">clustering.plan.partition.filter.mode<a class="hash-link" href="#clusteringplanpartitionfiltermode" title="Direct link to heading"></a></h4><p>Partition filter mode used in the creation of clustering plan. Available values are - NONE: do not filter table partition and thus the clustering plan will include all partitions that have clustering candidate.RECENT_DAYS: keep a continuous range of partitions, worked together with configs &#x27;hoodie.clustering.plan.strategy.daybased.lookback.partitions&#x27; and &#x27;hoodie.clustering.plan.strategy.daybased.skipfromlatest.partitions.SELECTED_PARTITIONS: keep partitions that are in the specified range <!-- -->[&#x27;hoodie.clustering.plan.strategy.cluster.begin.partition&#x27;, &#x27;hoodie.clustering.plan.strategy.cluster.end.partition&#x27;]<!-- -->.<br>
<strong>Default Value</strong>: NONE (Optional)<br>
<code>Config Param: CLUSTERING_PLAN_PARTITION_FILTER_MODE_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncdb">hive_sync.db<a class="hash-link" href="#hive_syncdb" title="Direct link to heading"></a></h4><p>Database name for hive sync, default &#x27;default&#x27;<br>
<strong>Default Value</strong>: default (Optional)<br>
<code>Config Param: HIVE_SYNC_DB</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategysortcolumns">clustering.plan.strategy.sort.columns<a class="hash-link" href="#clusteringplanstrategysortcolumns" title="Direct link to heading"></a></h4><p>Columns to sort the data by when clustering<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: CLUSTERING_SORT_COLUMNS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactionscheduleenabled">compaction.schedule.enabled<a class="hash-link" href="#compactionscheduleenabled" title="Direct link to heading"></a></h4><p>Schedule the compaction plan, enabled by default for MOR<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: COMPACTION_SCHEDULE_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncpartition_extractor_class">hive_sync.partition_extractor_class<a class="hash-link" href="#hive_syncpartition_extractor_class" title="Direct link to heading"></a></h4><p>Tool to extract the partition value from HDFS path, default &#x27;SlashEncodedDayPartitionValueExtractor&#x27;<br>
<strong>Default Value</strong>: org.apache.hudi.hive.SlashEncodedDayPartitionValueExtractor (Optional)<br>
<code>Config Param: HIVE_SYNC_PARTITION_EXTRACTOR_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeprecombine">write.precombine<a class="hash-link" href="#writeprecombine" title="Direct link to heading"></a></h4><p>Flag to indicate whether to drop duplicates before insert/upsert.
By default these cases will accept duplicates, to gain extra performance:
1) insert operation;
2) upsert for MOR table, the MOR table deduplicate on reading<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: PRE_COMBINE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writebatchsize">write.batch.size<a class="hash-link" href="#writebatchsize" title="Direct link to heading"></a></h4><p>Batch buffer size in MB to flush data into the underneath filesystem, default 256MB<br>
<strong>Default Value</strong>: 256.0 (Optional)<br>
<code>Config Param: WRITE_BATCH_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratorclass-1">hoodie.datasource.write.keygenerator.class<a class="hash-link" href="#hoodiedatasourcewritekeygeneratorclass-1" title="Direct link to heading"></a></h4><p>Key generator class, that implements will extract the key out of incoming record<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: KEYGEN_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="indexglobalenabled">index.global.enabled<a class="hash-link" href="#indexglobalenabled" title="Direct link to heading"></a></h4><p>Whether to update index for the old partition path
if same key record with different partition path came in, default true<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: INDEX_GLOBAL_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringdelta_commits">clustering.delta_commits<a class="hash-link" href="#clusteringdelta_commits" title="Direct link to heading"></a></h4><p>Max delta commits needed to trigger clustering, default 4 commits<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: CLUSTERING_DELTA_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="path">path<a class="hash-link" href="#path" title="Direct link to heading"></a></h4><p>Base path for the target hoodie table.
The path would be created if it does not exist,
otherwise a Hoodie table expects to be initialized successfully<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="indexbootstrapenabled">index.bootstrap.enabled<a class="hash-link" href="#indexbootstrapenabled" title="Direct link to heading"></a></h4><p>Whether to bootstrap the index state from existing hoodie table, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INDEX_BOOTSTRAP_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readstreamingskip_compaction">read.streaming.skip_compaction<a class="hash-link" href="#readstreamingskip_compaction" title="Direct link to heading"></a></h4><p>Whether to skip compaction instants for streaming read,
there are two cases that this option can be used to avoid reading duplicates:
1) you are definitely sure that the consumer reads faster than any compaction instants, usually with delta time compaction strategy that is long enough, for e.g, one week;
2) changelog mode is enabled, this option is a solution to keep data integrity<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: READ_STREAMING_SKIP_COMPACT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactionasyncenabled">compaction.async.enabled<a class="hash-link" href="#compactionasyncenabled" title="Direct link to heading"></a></h4><p>Async Compaction, enabled by default for MOR<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: COMPACTION_ASYNC_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncignore_exceptions">hive_sync.ignore_exceptions<a class="hash-link" href="#hive_syncignore_exceptions" title="Direct link to heading"></a></h4><p>Ignore exceptions during hive synchronization, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_IGNORE_EXCEPTIONS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_synctable_properties">hive_sync.table_properties<a class="hash-link" href="#hive_synctable_properties" title="Direct link to heading"></a></h4><p>Additional properties to store with table, the data format is k1=v1
k2=v2<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_SYNC_TABLE_PROPERTIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeignorefailed">write.ignore.failed<a class="hash-link" href="#writeignorefailed" title="Direct link to heading"></a></h4><p>Flag to indicate whether to ignore any non exception error (e.g. writestatus error). within a checkpoint batch.
By default true (in favor of streaming progressing over data integrity)<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: IGNORE_FAILED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writecommitacktimeout">write.commit.ack.timeout<a class="hash-link" href="#writecommitacktimeout" title="Direct link to heading"></a></h4><p>Timeout limit for a writer task after it finishes a checkpoint and
waits for the instant commit success, only for internal use<br>
<strong>Default Value</strong>: -1 (Optional)<br>
<code>Config Param: WRITE_COMMIT_ACK_TIMEOUT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeoperation">write.operation<a class="hash-link" href="#writeoperation" title="Direct link to heading"></a></h4><p>The write operation, that this write should do<br>
<strong>Default Value</strong>: upsert (Optional)<br>
<code>Config Param: OPERATION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathfield-1">hoodie.datasource.write.partitionpath.field<a class="hash-link" href="#hoodiedatasourcewritepartitionpathfield-1" title="Direct link to heading"></a></h4><p>Partition path field. Value to be used at the <code>partitionPath</code> component of <code>HoodieKey</code>.
Actual value obtained by invoking .toString(), default &#x27;&#x27;<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: PARTITION_PATH_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writebucket_assigntasks">write.bucket_assign.tasks<a class="hash-link" href="#writebucket_assigntasks" title="Direct link to heading"></a></h4><p>Parallelism of tasks that do bucket assign, default is the parallelism of the execution environment<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BUCKET_ASSIGN_TASKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactiondelta_commits">compaction.delta_commits<a class="hash-link" href="#compactiondelta_commits" title="Direct link to heading"></a></h4><p>Max delta commits needed to trigger compaction, default 5 commits<br>
<strong>Default Value</strong>: 5 (Optional)<br>
<code>Config Param: COMPACTION_DELTA_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="partitiondefault_name">partition.default_name<a class="hash-link" href="#partitiondefault_name" title="Direct link to heading"></a></h4><p>The default partition name in case the dynamic partition column value is null/empty string<br>
<strong>Default Value</strong>: <strong>HIVE_DEFAULT_PARTITION</strong> (Optional)<br>
<code>Config Param: PARTITION_DEFAULT_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writebulk_insertsort_input">write.bulk_insert.sort_input<a class="hash-link" href="#writebulk_insertsort_input" title="Direct link to heading"></a></h4><p>Whether to sort the inputs by specific fields for bulk insert tasks, default true<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: WRITE_BULK_INSERT_SORT_INPUT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategysmallfilelimit">clustering.plan.strategy.small.file.limit<a class="hash-link" href="#clusteringplanstrategysmallfilelimit" title="Direct link to heading"></a></h4><p>Files smaller than the size specified here are candidates for clustering, default 600 MB<br>
<strong>Default Value</strong>: 600 (Optional)<br>
<code>Config Param: CLUSTERING_PLAN_STRATEGY_SMALL_FILE_LIMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringscheduleenabled">clustering.schedule.enabled<a class="hash-link" href="#clusteringscheduleenabled" title="Direct link to heading"></a></h4><p>Schedule the cluster plan, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: CLUSTERING_SCHEDULE_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactiontarget_io">compaction.target_io<a class="hash-link" href="#compactiontarget_io" title="Direct link to heading"></a></h4><p>Target IO in MB for per compaction (both read and write), default 500 GB<br>
<strong>Default Value</strong>: 512000 (Optional)<br>
<code>Config Param: COMPACTION_TARGET_IO</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategyclass">clustering.plan.strategy.class<a class="hash-link" href="#clusteringplanstrategyclass" title="Direct link to heading"></a></h4><p>Config to provide a strategy class (subclass of ClusteringPlanStrategy) to create clustering plan i.e select what file groups are being clustered. Default strategy, looks at the last N (determined by clustering.plan.strategy.daybased.lookback.partitions) day based partitions picks the small file slices within those partitions.<br>
<strong>Default Value</strong>: org.apache.hudi.client.clustering.plan.strategy.FlinkSizeBasedClusteringPlanStrategy (Optional)<br>
<code>Config Param: CLUSTERING_PLAN_STRATEGY_CLASS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writelog_blocksize">write.log_block.size<a class="hash-link" href="#writelog_blocksize" title="Direct link to heading"></a></h4><p>Max log block size in MB for log file, default 128MB<br>
<strong>Default Value</strong>: 128 (Optional)<br>
<code>Config Param: WRITE_LOG_BLOCK_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writetasks">write.tasks<a class="hash-link" href="#writetasks" title="Direct link to heading"></a></h4><p>Parallelism of tasks that do actual write, default is 4<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: WRITE_TASKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="cleanasyncenabled">clean.async.enabled<a class="hash-link" href="#cleanasyncenabled" title="Direct link to heading"></a></h4><p>Whether to cleanup the old commits immediately on new commits, enabled by default<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: CLEAN_ASYNC_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="cleanretain_commits">clean.retain_commits<a class="hash-link" href="#cleanretain_commits" title="Direct link to heading"></a></h4><p>Number of commits to retain. So data will be retained for num_of_commits * time_between_commits (scheduled).
This also directly translates into how much you can incrementally pull on this table, default 30<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: CLEAN_RETAIN_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="archivemax_commits">archive.max_commits<a class="hash-link" href="#archivemax_commits" title="Direct link to heading"></a></h4><p>Max number of commits to keep before archiving older commits into a sequential log, default 50<br>
<strong>Default Value</strong>: 50 (Optional)<br>
<code>Config Param: ARCHIVE_MAX_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeindex_bootstraptasks">write.index_bootstrap.tasks<a class="hash-link" href="#writeindex_bootstraptasks" title="Direct link to heading"></a></h4><p>Parallelism of tasks that do index bootstrap, default is the parallelism of the execution environment<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: INDEX_BOOTSTRAP_TASKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writetaskmaxsize">write.task.max.size<a class="hash-link" href="#writetaskmaxsize" title="Direct link to heading"></a></h4><p>Maximum memory in MB for a write task, when the threshold hits,
it flushes the max size data bucket to avoid OOM, default 1GB<br>
<strong>Default Value</strong>: 1024.0 (Optional)<br>
<code>Config Param: WRITE_TASK_MAX_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriterecordkeyfield-1">hoodie.datasource.write.recordkey.field<a class="hash-link" href="#hoodiedatasourcewriterecordkeyfield-1" title="Direct link to heading"></a></h4><p>Record key field. Value to be used as the <code>recordKey</code> component of <code>HoodieKey</code>.
Actual value will be obtained by invoking .toString() on the field value. Nested fields can be specified using the dot notation eg: <code>a.b.c</code><br>
<strong>Default Value</strong>: uuid (Optional)<br>
<code>Config Param: RECORD_KEY_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactiondelta_seconds">compaction.delta_seconds<a class="hash-link" href="#compactiondelta_seconds" title="Direct link to heading"></a></h4><p>Max delta seconds time needed to trigger compaction, default 1 hour<br>
<strong>Default Value</strong>: 3600 (Optional)<br>
<code>Config Param: COMPACTION_DELTA_SECONDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncpartition_fields">hive_sync.partition_fields<a class="hash-link" href="#hive_syncpartition_fields" title="Direct link to heading"></a></h4><p>Partition fields for hive sync, default &#x27;&#x27;<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: HIVE_SYNC_PARTITION_FIELDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readstreamingenabled">read.streaming.enabled<a class="hash-link" href="#readstreamingenabled" title="Direct link to heading"></a></h4><p>Whether to read as streaming source, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: READ_AS_STREAMING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratortype">hoodie.datasource.write.keygenerator.type<a class="hash-link" href="#hoodiedatasourcewritekeygeneratortype" title="Direct link to heading"></a></h4><p>Key generator type, that implements will extract the key out of incoming record.
<strong>Note</strong> This is being actively worked on. Please use <code>hoodie.datasource.write.keygenerator.class</code> instead. <br>
<strong>Default Value</strong>: SIMPLE (Optional)<br>
<code>Config Param: KEYGEN_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="cleanretain_file_versions">clean.retain_file_versions<a class="hash-link" href="#cleanretain_file_versions" title="Direct link to heading"></a></h4><p>Number of file versions to retain. default 5<br>
<strong>Default Value</strong>: 5 (Optional)<br>
<code>Config Param: CLEAN_RETAIN_FILE_VERSIONS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="compactionmax_memory">compaction.max_memory<a class="hash-link" href="#compactionmax_memory" title="Direct link to heading"></a></h4><p>Max memory in MB for compaction spillable map, default 100MB<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: COMPACTION_MAX_MEMORY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncsupport_timestamp">hive_sync.support_timestamp<a class="hash-link" href="#hive_syncsupport_timestamp" title="Direct link to heading"></a></h4><p>INT64 with original type TIMESTAMP_MICROS is converted to hive timestamp type.
Disabled by default for backward compatibility.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: HIVE_SYNC_SUPPORT_TIMESTAMP</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncskip_ro_suffix">hive_sync.skip_ro_suffix<a class="hash-link" href="#hive_syncskip_ro_suffix" title="Direct link to heading"></a></h4><p>Skip the _ro suffix for Read optimized table when registering, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_SKIP_RO_SUFFIX</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="metadatacompactiondelta_commits">metadata.compaction.delta_commits<a class="hash-link" href="#metadatacompactiondelta_commits" title="Direct link to heading"></a></h4><p>Max delta commits for metadata table to trigger compaction, default 10<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: METADATA_COMPACTION_DELTA_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncassume_date_partitioning">hive_sync.assume_date_partitioning<a class="hash-link" href="#hive_syncassume_date_partitioning" title="Direct link to heading"></a></h4><p>Assume partitioning is yyyy/mm/dd, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_ASSUME_DATE_PARTITION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeparquetblocksize">write.parquet.block.size<a class="hash-link" href="#writeparquetblocksize" title="Direct link to heading"></a></h4><p>Parquet RowGroup size. It&#x27;s recommended to make this large enough that scan costs can be amortized by packing enough column values into a single row group.<br>
<strong>Default Value</strong>: 120 (Optional)<br>
<code>Config Param: WRITE_PARQUET_BLOCK_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategytargetfilemaxbytes">clustering.plan.strategy.target.file.max.bytes<a class="hash-link" href="#clusteringplanstrategytargetfilemaxbytes" title="Direct link to heading"></a></h4><p>Each group can produce &#x27;N&#x27; (CLUSTERING_MAX_GROUP_SIZE/CLUSTERING_TARGET_FILE_SIZE) output file groups, default 1 GB<br>
<strong>Default Value</strong>: 1073741824 (Optional)<br>
<code>Config Param: CLUSTERING_PLAN_STRATEGY_TARGET_FILE_MAX_BYTES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringtasks">clustering.tasks<a class="hash-link" href="#clusteringtasks" title="Direct link to heading"></a></h4><p>Parallelism of tasks that do actual clustering, default is 4<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: CLUSTERING_TASKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncenable">hive_sync.enable<a class="hash-link" href="#hive_syncenable" title="Direct link to heading"></a></h4><p>Asynchronously sync Hive meta to HMS, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_SYNC_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="changelogenabled">changelog.enabled<a class="hash-link" href="#changelogenabled" title="Direct link to heading"></a></h4><p>Whether to keep all the intermediate changes, we try to keep all the changes of a record when enabled:
1). The sink accept the UPDATE_BEFORE message;
2). The source try to emit every changes of a record.
The semantics is best effort because the compaction job would finally merge all changes of a record into one.
default false to have UPSERT semantics<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: CHANGELOG_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readstreamingcheck-interval">read.streaming.check-interval<a class="hash-link" href="#readstreamingcheck-interval" title="Direct link to heading"></a></h4><p>Check interval for streaming read of SECOND, default 1 minute<br>
<strong>Default Value</strong>: 60 (Optional)<br>
<code>Config Param: READ_STREAMING_CHECK_INTERVAL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcemergetype-1">hoodie.datasource.merge.type<a class="hash-link" href="#hoodiedatasourcemergetype-1" title="Direct link to heading"></a></h4><p>For Snapshot query on merge on read table. Use this key to define how the payloads are merged, in
1) skip_merge: read the base file records plus the log file records;
2) payload_combine: read the base file records first, for each record in base file, checks whether the key is in the
log file records(combines the two records with same key for base and log file records), then read the left log file records<br>
<strong>Default Value</strong>: payload_combine (Optional)<br>
<code>Config Param: MERGE_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readtasks">read.tasks<a class="hash-link" href="#readtasks" title="Direct link to heading"></a></h4><p>Parallelism of tasks that do actual read, default is 4<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: READ_TASKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readend-commit">read.end-commit<a class="hash-link" href="#readend-commit" title="Direct link to heading"></a></h4><p>End commit instant for reading, the commit time format should be &#x27;yyyyMMddHHmmss&#x27;<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: READ_END_COMMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writelogmaxsize">write.log.max.size<a class="hash-link" href="#writelogmaxsize" title="Direct link to heading"></a></h4><p>Maximum size allowed in MB for a log file before it is rolled over to the next version, default 1GB<br>
<strong>Default Value</strong>: 1024 (Optional)<br>
<code>Config Param: WRITE_LOG_MAX_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategydaybasedlookbackpartitions">clustering.plan.strategy.daybased.lookback.partitions<a class="hash-link" href="#clusteringplanstrategydaybasedlookbackpartitions" title="Direct link to heading"></a></h4><p>Number of partitions to list to create ClusteringPlan, default is 2<br>
<strong>Default Value</strong>: 2 (Optional)<br>
<code>Config Param: CLUSTERING_TARGET_PARTITIONS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncfile_format">hive_sync.file_format<a class="hash-link" href="#hive_syncfile_format" title="Direct link to heading"></a></h4><p>File format for hive sync, default &#x27;PARQUET&#x27;<br>
<strong>Default Value</strong>: PARQUET (Optional)<br>
<code>Config Param: HIVE_SYNC_FILE_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="clusteringplanstrategymaxnumgroups">clustering.plan.strategy.max.num.groups<a class="hash-link" href="#clusteringplanstrategymaxnumgroups" title="Direct link to heading"></a></h4><p>Maximum number of groups to create as part of ClusteringPlan. Increasing groups will increase parallelism, default is 30<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: CLUSTERING_MAX_NUM_GROUPS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="indextype">index.type<a class="hash-link" href="#indextype" title="Direct link to heading"></a></h4><p>Index type of Flink write job, default is using state backed index.<br>
<strong>Default Value</strong>: FLINK_STATE (Optional)<br>
<code>Config Param: INDEX_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readdataskippingenabled">read.data.skipping.enabled<a class="hash-link" href="#readdataskippingenabled" title="Direct link to heading"></a></h4><p>Enables data-skipping allowing queries to leverage indexes to reduce the search space byskipping over files<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: READ_DATA_SKIPPING_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="cleanpolicy">clean.policy<a class="hash-link" href="#cleanpolicy" title="Direct link to heading"></a></h4><p>Clean policy to manage the Hudi table. Available option: KEEP_LATEST_COMMITS, KEEP_LATEST_FILE_VERSIONS, KEEP_LATEST_BY_HOURS.Default is KEEP_LATEST_COMMITS.<br>
<strong>Default Value</strong>: KEEP_LATEST_COMMITS (Optional)<br>
<code>Config Param: CLEAN_POLICY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncpassword">hive_sync.password<a class="hash-link" href="#hive_syncpassword" title="Direct link to heading"></a></h4><p>Password for hive sync, default &#x27;hive&#x27;<br>
<strong>Default Value</strong>: hive (Optional)<br>
<code>Config Param: HIVE_SYNC_PASSWORD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncuse_jdbc">hive_sync.use_jdbc<a class="hash-link" href="#hive_syncuse_jdbc" title="Direct link to heading"></a></h4><p>Use JDBC when hive synchronization is enabled, default true<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: HIVE_SYNC_USE_JDBC</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncjdbc_url">hive_sync.jdbc_url<a class="hash-link" href="#hive_syncjdbc_url" title="Direct link to heading"></a></h4><p>Jdbc URL for hive sync, default &#x27;jdbc:hive2://localhost:10000&#x27;<br>
<strong>Default Value</strong>: jdbc:hive2://localhost:10000 (Optional)<br>
<code>Config Param: HIVE_SYNC_JDBC_URL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readstart-commit">read.start-commit<a class="hash-link" href="#readstart-commit" title="Direct link to heading"></a></h4><p>Start commit instant for reading, the commit time format should be &#x27;yyyyMMddHHmmss&#x27;, by default reading from the latest instant for streaming read<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: READ_START_COMMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="archivemin_commits">archive.min_commits<a class="hash-link" href="#archivemin_commits" title="Direct link to heading"></a></h4><p>Min number of commits to keep before archiving older commits into a sequential log, default 40<br>
<strong>Default Value</strong>: 40 (Optional)<br>
<code>Config Param: ARCHIVE_MIN_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="indexpartitionregex">index.partition.regex<a class="hash-link" href="#indexpartitionregex" title="Direct link to heading"></a></h4><p>Whether to load partitions in state if partition path matching, default <code>*</code><br>
<strong>Default Value</strong>: .* (Optional)<br>
<code>Config Param: INDEX_PARTITION_REGEX</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablename">hoodie.table.name<a class="hash-link" href="#hoodietablename" title="Direct link to heading"></a></h4><p>Table name to register to Hive metastore<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TABLE_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathurlencode-1">hoodie.datasource.write.partitionpath.urlencode<a class="hash-link" href="#hoodiedatasourcewritepartitionpathurlencode-1" title="Direct link to heading"></a></h4><p>Whether to encode the partition path url, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: URL_ENCODE_PARTITIONING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="sourceavro-schemapath">source.avro-schema.path<a class="hash-link" href="#sourceavro-schemapath" title="Direct link to heading"></a></h4><p>Source avro schema file path, the parsed schema is used for deserialization<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: SOURCE_AVRO_SCHEMA_PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeinsertcluster">write.insert.cluster<a class="hash-link" href="#writeinsertcluster" title="Direct link to heading"></a></h4><p>Whether to merge small files for insert mode, if true, the write throughput will decrease because the read/write of existing small file, only valid for COW table, default false<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INSERT_CLUSTER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="sourceavro-schema">source.avro-schema<a class="hash-link" href="#sourceavro-schema" title="Direct link to heading"></a></h4><p>Source avro schema string, the parsed schema is used for deserialization<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: SOURCE_AVRO_SCHEMA</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncconfdir">hive_sync.conf.dir<a class="hash-link" href="#hive_syncconfdir" title="Direct link to heading"></a></h4><p>The hive configuration directory, where the hive-site.xml lies in, the file should be put on the client machine<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_SYNC_CONF_DIR</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeratelimit">write.rate.limit<a class="hash-link" href="#writeratelimit" title="Direct link to heading"></a></h4><p>Write record rate limit per second to prevent traffic jitter and improve stability, default 0 (no limit)<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: WRITE_RATE_LIMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="cleanretain_hours">clean.retain_hours<a class="hash-link" href="#cleanretain_hours" title="Direct link to heading"></a></h4><p>Number of hours for which commits need to be retained. This config provides a more flexible option ascompared to number of commits retained for cleaning service. Setting this property ensures all the files, but the latest in a file group, corresponding to commits with commit times older than the configured number of hours to be retained are cleaned.<br>
<strong>Default Value</strong>: 24 (Optional)<br>
<code>Config Param: CLEAN_RETAIN_HOURS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="readutc-timezone">read.utc-timezone<a class="hash-link" href="#readutc-timezone" title="Direct link to heading"></a></h4><p>Use UTC timezone or local timezone to the conversion between epoch time and LocalDateTime. Hive 0.x/1.x/2.x use local timezone. But Hive 3.x use UTC timezone, by default true<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: UTC_TIMEZONE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcequerytype-1">hoodie.datasource.query.type<a class="hash-link" href="#hoodiedatasourcequerytype-1" title="Direct link to heading"></a></h4><p>Decides how data files need to be read, in
1) Snapshot mode (obtain latest view, based on row <!-- -->&amp;<!-- --> columnar data);
2) incremental mode (new data since an instantTime);
3) Read Optimized mode (obtain latest view, based on columnar data)
.Default: snapshot<br>
<strong>Default Value</strong>: snapshot (Optional)<br>
<code>Config Param: QUERY_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeprecombinefield">write.precombine.field<a class="hash-link" href="#writeprecombinefield" title="Direct link to heading"></a></h4><p>Field used in preCombining before actual write. When two records have the same
key value, we will pick the one with the largest value for the precombine field,
determined by Object.compareTo(..)<br>
<strong>Default Value</strong>: ts (Optional)<br>
<code>Config Param: PRECOMBINE_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writeparquetpagesize">write.parquet.page.size<a class="hash-link" href="#writeparquetpagesize" title="Direct link to heading"></a></h4><p>Parquet page size. Page is the unit of read within a parquet file. Within a block, pages are compressed separately.<br>
<strong>Default Value</strong>: 1 (Optional)<br>
<code>Config Param: WRITE_PARQUET_PAGE_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hive_syncmetastoreuris">hive_sync.metastore.uris<a class="hash-link" href="#hive_syncmetastoreuris" title="Direct link to heading"></a></h4><p>Metastore uris for hive sync, default &#x27;&#x27;<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: HIVE_SYNC_METASTORE_URIS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="writemergemax_memory">write.merge.max_memory<a class="hash-link" href="#writemergemax_memory" title="Direct link to heading"></a></h4><p>Max memory in MB for merge, default 100MB<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: WRITE_MERGE_MAX_MEMORY</code><br></p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_y2LR" id="WRITE_CLIENT">Write Client Configs<a class="hash-link" href="#WRITE_CLIENT" title="Direct link to heading"></a></h2><p>Internally, the Hudi datasource uses a RDD based HoodieWriteClient API to actually perform writes to storage. These configs provide deep control over lower level aspects like file sizing, compression, parallelism, compaction, write schema, cleaning etc. Although Hudi provides sane defaults, from time-time these configs may need to be tweaked to optimize for specific workloads.</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Layout-Configs">Layout Configs<a class="hash-link" href="#Layout-Configs" title="Direct link to heading"></a></h3><p>Configurations that control storage layout and data distribution, which defines how the files are organized within a table.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieLayoutConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiestoragelayouttype">hoodie.storage.layout.type<a class="hash-link" href="#hoodiestoragelayouttype" title="Direct link to heading"></a></h4><p>Type of storage layout. Possible options are <!-- -->[DEFAULT | BUCKET]<br>
<strong>Default Value</strong>: DEFAULT (Optional)<br>
<code>Config Param: LAYOUT_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiestoragelayoutpartitionerclass">hoodie.storage.layout.partitioner.class<a class="hash-link" href="#hoodiestoragelayoutpartitionerclass" title="Direct link to heading"></a></h4><p>Partitioner class, it is used to distribute data in a specific way.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: LAYOUT_PARTITIONER_CLASS_NAME</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Write-commit-callback-configs">Write commit callback configs<a class="hash-link" href="#Write-commit-callback-configs" title="Direct link to heading"></a></h3><p>Controls callback behavior into HTTP endpoints, to push notifications on commits on hudi tables.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieWriteCommitCallbackConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackon">hoodie.write.commit.callback.on<a class="hash-link" href="#hoodiewritecommitcallbackon" title="Direct link to heading"></a></h4><p>Turn commit callback on/off. off by default.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: TURN_CALLBACK_ON</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackhttpurl">hoodie.write.commit.callback.http.url<a class="hash-link" href="#hoodiewritecommitcallbackhttpurl" title="Direct link to heading"></a></h4><p>Callback host to be sent along with callback messages<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: CALLBACK_HTTP_URL</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackhttptimeoutseconds">hoodie.write.commit.callback.http.timeout.seconds<a class="hash-link" href="#hoodiewritecommitcallbackhttptimeoutseconds" title="Direct link to heading"></a></h4><p>Callback timeout in seconds. 3 by default<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: CALLBACK_HTTP_TIMEOUT_IN_SECONDS</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackclass">hoodie.write.commit.callback.class<a class="hash-link" href="#hoodiewritecommitcallbackclass" title="Direct link to heading"></a></h4><p>Full path of callback class and must be a subclass of HoodieWriteCommitCallback class, org.apache.hudi.callback.impl.HoodieWriteCommitHttpCallback by default<br>
<strong>Default Value</strong>: org.apache.hudi.callback.impl.HoodieWriteCommitHttpCallback (Optional)<br>
<code>Config Param: CALLBACK_CLASS_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackhttpapikey">hoodie.write.commit.callback.http.api.key<a class="hash-link" href="#hoodiewritecommitcallbackhttpapikey" title="Direct link to heading"></a></h4><p>Http callback API key. hudi_write_commit_http_callback by default<br>
<strong>Default Value</strong>: hudi_write_commit_http_callback (Optional)<br>
<code>Config Param: CALLBACK_HTTP_API_KEY_VALUE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Clean-Configs">Clean Configs<a class="hash-link" href="#Clean-Configs" title="Direct link to heading"></a></h3><p>Cleaning (reclamation of older/unused file groups/slices).</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieCleanConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerfileversionsretained">hoodie.cleaner.fileversions.retained<a class="hash-link" href="#hoodiecleanerfileversionsretained" title="Direct link to heading"></a></h4><p>When KEEP_LATEST_FILE_VERSIONS cleaning policy is used, the minimum number of file slices to retain in each file group, during cleaning.<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: CLEANER_FILE_VERSIONS_RETAINED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanmaxcommits">hoodie.clean.max.commits<a class="hash-link" href="#hoodiecleanmaxcommits" title="Direct link to heading"></a></h4><p>Number of commits after the last clean operation, before scheduling of a new clean is attempted.<br>
<strong>Default Value</strong>: 1 (Optional)<br>
<code>Config Param: CLEAN_MAX_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanallowmultiple">hoodie.clean.allow.multiple<a class="hash-link" href="#hoodiecleanallowmultiple" title="Direct link to heading"></a></h4><p>Allows scheduling/executing multiple cleans by enabling this config. If users prefer to strictly ensure clean requests should be mutually exclusive, .i.e. a 2nd clean will not be scheduled if another clean is not yet completed to avoid repeat cleaning of same files, they might want to disable this config.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ALLOW_MULTIPLE_CLEANS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanautomatic">hoodie.clean.automatic<a class="hash-link" href="#hoodiecleanautomatic" title="Direct link to heading"></a></h4><p>When enabled, the cleaner table service is invoked immediately after each commit, to delete older file slices. It&#x27;s recommended to enable this, to ensure metadata and data storage growth is bounded.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: AUTO_CLEAN</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerparallelism">hoodie.cleaner.parallelism<a class="hash-link" href="#hoodiecleanerparallelism" title="Direct link to heading"></a></h4><p>Parallelism for the cleaning operation. Increase this if cleaning becomes slow.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: CLEANER_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerincrementalmode">hoodie.cleaner.incremental.mode<a class="hash-link" href="#hoodiecleanerincrementalmode" title="Direct link to heading"></a></h4><p>When enabled, the plans for each cleaner service run is computed incrementally off the events in the timeline, since the last cleaner run. This is much more efficient than obtaining listings for the full table for each planning (even with a metadata table).<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: CLEANER_INCREMENTAL_MODE_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanasync">hoodie.clean.async<a class="hash-link" href="#hoodiecleanasync" title="Direct link to heading"></a></h4><p>Only applies when hoodie.clean.automatic is turned on. When turned on runs cleaner async with writing, which can speed up overall write performance.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASYNC_CLEAN</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleantriggerstrategy">hoodie.clean.trigger.strategy<a class="hash-link" href="#hoodiecleantriggerstrategy" title="Direct link to heading"></a></h4><p>Controls how cleaning is scheduled. Valid options: NUM_COMMITS<br>
<strong>Default Value</strong>: NUM_COMMITS (Optional)<br>
<code>Config Param: CLEAN_TRIGGER_STRATEGY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerdeletebootstrapbasefile">hoodie.cleaner.delete.bootstrap.base.file<a class="hash-link" href="#hoodiecleanerdeletebootstrapbasefile" title="Direct link to heading"></a></h4><p>When set to true, cleaner also deletes the bootstrap base file when it&#x27;s skeleton base file is cleaned. Turn this to true, if you want to ensure the bootstrap dataset storage is reclaimed over time, as the table receives updates/deletes. Another reason to turn this on, would be to ensure data residing in bootstrap base files are also physically deleted, to comply with data privacy enforcement processes.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: CLEANER_BOOTSTRAP_BASE_FILE_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerhoursretained">hoodie.cleaner.hours.retained<a class="hash-link" href="#hoodiecleanerhoursretained" title="Direct link to heading"></a></h4><p>Number of hours for which commits need to be retained. This config provides a more flexible option ascompared to number of commits retained for cleaning service. Setting this property ensures all the files, but the latest in a file group, corresponding to commits with commit times older than the configured number of hours to be retained are cleaned.<br>
<strong>Default Value</strong>: 24 (Optional)<br>
<code>Config Param: CLEANER_HOURS_RETAINED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanercommitsretained">hoodie.cleaner.commits.retained<a class="hash-link" href="#hoodiecleanercommitsretained" title="Direct link to heading"></a></h4><p>Number of commits to retain, without cleaning. This will be retained for num_of_commits * time_between_commits (scheduled). This also directly translates into how much data retention the table supports for incremental queries.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: CLEANER_COMMITS_RETAINED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerpolicyfailedwrites">hoodie.cleaner.policy.failed.writes<a class="hash-link" href="#hoodiecleanerpolicyfailedwrites" title="Direct link to heading"></a></h4><p>Cleaning policy for failed writes to be used. Hudi will delete any files written by failed writes to re-claim space. Choose to perform this rollback of failed writes eagerly before every writer starts (only supported for single writer) or lazily by the cleaner (required for multi-writers)<br>
<strong>Default Value</strong>: EAGER (Optional)<br>
<code>Config Param: FAILED_WRITES_CLEANER_POLICY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecleanerpolicy">hoodie.cleaner.policy<a class="hash-link" href="#hoodiecleanerpolicy" title="Direct link to heading"></a></h4><p>Cleaning policy to be used. The cleaner service deletes older file slices files to re-claim space. By default, cleaner spares the file slices written by the last N commits, determined by hoodie.cleaner.commits.retained Long running query plans may often refer to older file slices and will break if those are cleaned, before the query has had a chance to run. So, it is good to make sure that the data is retained for more than the maximum query execution time<br>
<strong>Default Value</strong>: KEEP_LATEST_COMMITS (Optional)<br>
<code>Config Param: CLEANER_POLICY</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metastore-Configs">Metastore Configs<a class="hash-link" href="#Metastore-Configs" title="Direct link to heading"></a></h3><p>Configurations used by the Hudi Metastore.</p><p><code>Config Class</code>: org.apache.hudi.common.config.HoodieMetastoreConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetastoreuris">hoodie.metastore.uris<a class="hash-link" href="#hoodiemetastoreuris" title="Direct link to heading"></a></h4><p>Metastore server uris<br>
<strong>Default Value</strong>: thrift://localhost:9090 (Optional)<br>
<code>Config Param: METASTORE_URLS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetastoreenable">hoodie.metastore.enable<a class="hash-link" href="#hoodiemetastoreenable" title="Direct link to heading"></a></h4><p>Use metastore server to store hoodie table metadata<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: METASTORE_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetastoreconnectretries">hoodie.metastore.connect.retries<a class="hash-link" href="#hoodiemetastoreconnectretries" title="Direct link to heading"></a></h4><p>Number of retries while opening a connection to metastore<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: METASTORE_CONNECTION_RETRIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetastoreconnectretrydelay">hoodie.metastore.connect.retry.delay<a class="hash-link" href="#hoodiemetastoreconnectretrydelay" title="Direct link to heading"></a></h4><p>Number of seconds for the client to wait between consecutive connection attempts<br>
<strong>Default Value</strong>: 1 (Optional)<br>
<code>Config Param: METASTORE_CONNECTION_RETRY_DELAY</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Table-Configurations">Table Configurations<a class="hash-link" href="#Table-Configurations" title="Direct link to heading"></a></h3><p>Configurations that persist across writes and read on a Hudi table like base, log file formats, table name, creation schema, table version layouts. Configurations are loaded from hoodie.properties, these properties are usually set during initializing a path as hoodie base path and rarely changes during the lifetime of the table. Writers/Queries&#x27; configurations are validated against these each time for compatibility.</p><p><code>Config Class</code>: org.apache.hudi.common.table.HoodieTableConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietableprecombinefield">hoodie.table.precombine.field<a class="hash-link" href="#hoodietableprecombinefield" title="Direct link to heading"></a></h4><p>Field used in preCombining before actual write. By default, when two records have the same key value, the largest value for the precombine field determined by Object.compareTo(..), is picked.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PRECOMBINE_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchivelogfolder">hoodie.archivelog.folder<a class="hash-link" href="#hoodiearchivelogfolder" title="Direct link to heading"></a></h4><p>path under the meta folder, to store archived timeline instants at.<br>
<strong>Default Value</strong>: archived (Optional)<br>
<code>Config Param: ARCHIVELOG_FOLDER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietabletype">hoodie.table.type<a class="hash-link" href="#hoodietabletype" title="Direct link to heading"></a></h4><p>The table type for the underlying data, for this write. This can’t change between writes.<br>
<strong>Default Value</strong>: COPY_ON_WRITE (Optional)<br>
<code>Config Param: TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietabletimelinetimezone">hoodie.table.timeline.timezone<a class="hash-link" href="#hoodietabletimelinetimezone" title="Direct link to heading"></a></h4><p>User can set hoodie commit timeline timezone, such as utc, local and so on. local is default<br>
<strong>Default Value</strong>: LOCAL (Optional)<br>
<code>Config Param: TIMELINE_TIMEZONE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiepartitionmetafileusebaseformat">hoodie.partition.metafile.use.base.format<a class="hash-link" href="#hoodiepartitionmetafileusebaseformat" title="Direct link to heading"></a></h4><p>If true, partition metafiles are saved in the same format as base-files for this dataset (e.g. Parquet / ORC). If false (default) partition metafiles are saved as properties files.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: PARTITION_METAFILE_USE_BASE_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablechecksum">hoodie.table.checksum<a class="hash-link" href="#hoodietablechecksum" title="Direct link to heading"></a></h4><p>Table checksum is used to guard against partial writes in HDFS. It is added as the last entry in hoodie.properties and then used to validate while reading table config.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TABLE_CHECKSUM</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablecreateschema">hoodie.table.create.schema<a class="hash-link" href="#hoodietablecreateschema" title="Direct link to heading"></a></h4><p>Schema used when creating the table, for the first time.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: CREATE_SCHEMA</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablerecordkeyfields">hoodie.table.recordkey.fields<a class="hash-link" href="#hoodietablerecordkeyfields" title="Direct link to heading"></a></h4><p>Columns used to uniquely identify the table. Concatenated values of these fields are used as the record key component of HoodieKey.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: RECORDKEY_FIELDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablelogfileformat">hoodie.table.log.file.format<a class="hash-link" href="#hoodietablelogfileformat" title="Direct link to heading"></a></h4><p>Log format used for the delta logs.<br>
<strong>Default Value</strong>: HOODIE_LOG (Optional)<br>
<code>Config Param: LOG_FILE_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapindexenable">hoodie.bootstrap.index.enable<a class="hash-link" href="#hoodiebootstrapindexenable" title="Direct link to heading"></a></h4><p>Whether or not, this is a bootstrapped table, with bootstrap base data and an mapping index defined, default true.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: BOOTSTRAP_INDEX_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablemetadatapartitions">hoodie.table.metadata.partitions<a class="hash-link" href="#hoodietablemetadatapartitions" title="Direct link to heading"></a></h4><p>Comma-separated list of metadata partitions that have been completely built and in-sync with data table. These partitions are ready for use by the readers<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TABLE_METADATA_PARTITIONS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablemetadatapartitionsinflight">hoodie.table.metadata.partitions.inflight<a class="hash-link" href="#hoodietablemetadatapartitionsinflight" title="Direct link to heading"></a></h4><p>Comma-separated list of metadata partitions whose building is in progress. These partitions are not yet ready for use by the readers.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TABLE_METADATA_PARTITIONS_INFLIGHT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablepartitionfields">hoodie.table.partition.fields<a class="hash-link" href="#hoodietablepartitionfields" title="Direct link to heading"></a></h4><p>Fields used to partition the table. Concatenated values of these fields are used as the partition path, by invoking toString()<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION_FIELDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiepopulatemetafields">hoodie.populate.meta.fields<a class="hash-link" href="#hoodiepopulatemetafields" title="Direct link to heading"></a></h4><p>When enabled, populates all meta fields. When disabled, no meta fields are populated and incremental queries will not be functional. This is only meant to be used for append only/immutable data for batch processing<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: POPULATE_META_FIELDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionpayloadclass">hoodie.compaction.payload.class<a class="hash-link" href="#hoodiecompactionpayloadclass" title="Direct link to heading"></a></h4><p>Payload class to use for performing compactions, i.e merge delta logs with current base file and then produce a new base file.<br>
<strong>Default Value</strong>: org.apache.hudi.common.model.OverwriteWithLatestAvroPayload (Optional)<br>
<code>Config Param: PAYLOAD_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapindexclass">hoodie.bootstrap.index.class<a class="hash-link" href="#hoodiebootstrapindexclass" title="Direct link to heading"></a></h4><p>Implementation to use, for mapping base files to bootstrap base file, that contain actual data.<br>
<strong>Default Value</strong>: org.apache.hudi.common.bootstrap.index.HFileBootstrapIndex (Optional)<br>
<code>Config Param: BOOTSTRAP_INDEX_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathurlencode-2">hoodie.datasource.write.partitionpath.urlencode<a class="hash-link" href="#hoodiedatasourcewritepartitionpathurlencode-2" title="Direct link to heading"></a></h4><p>Should we url encode the partition path value, before creating the folder structure.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: URL_ENCODE_PARTITIONING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritehive_style_partitioning-2">hoodie.datasource.write.hive_style_partitioning<a class="hash-link" href="#hoodiedatasourcewritehive_style_partitioning-2" title="Direct link to heading"></a></h4><p>Flag to indicate whether to use Hive style partitioning.
If set true, the names of partition folders follow &lt;partition_column_name&gt;=&lt;partition_value&gt; format.
By default false (the names of partition folders are only partition values)<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_STYLE_PARTITIONING_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablekeygeneratorclass">hoodie.table.keygenerator.class<a class="hash-link" href="#hoodietablekeygeneratorclass" title="Direct link to heading"></a></h4><p>Key Generator class property for the hoodie table<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: KEY_GENERATOR_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietableversion">hoodie.table.version<a class="hash-link" href="#hoodietableversion" title="Direct link to heading"></a></h4><p>Version of table, used for running upgrade/downgrade steps between releases with potentially breaking/backwards compatible changes.<br>
<strong>Default Value</strong>: ZERO (Optional)<br>
<code>Config Param: VERSION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablebasefileformat">hoodie.table.base.file.format<a class="hash-link" href="#hoodietablebasefileformat" title="Direct link to heading"></a></h4><p>Base file format to store all the base file data.<br>
<strong>Default Value</strong>: PARQUET (Optional)<br>
<code>Config Param: BASE_FILE_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapbasepath">hoodie.bootstrap.base.path<a class="hash-link" href="#hoodiebootstrapbasepath" title="Direct link to heading"></a></h4><p>Base path of the dataset that needs to be bootstrapped as a Hudi table<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BOOTSTRAP_BASE_PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritedroppartitioncolumns-1">hoodie.datasource.write.drop.partition.columns<a class="hash-link" href="#hoodiedatasourcewritedroppartitioncolumns-1" title="Direct link to heading"></a></h4><p>When set to true, will not write the partition columns into hudi. By default, false.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: DROP_PARTITION_COLUMNS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatabasename">hoodie.database.name<a class="hash-link" href="#hoodiedatabasename" title="Direct link to heading"></a></h4><p>Database name that will be used for incremental query.If different databases have the same table name during incremental query, we can set it to limit the table name under a specific database<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: DATABASE_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietimelinelayoutversion">hoodie.timeline.layout.version<a class="hash-link" href="#hoodietimelinelayoutversion" title="Direct link to heading"></a></h4><p>Version of timeline used, by the table.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TIMELINE_LAYOUT_VERSION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablename-1">hoodie.table.name<a class="hash-link" href="#hoodietablename-1" title="Direct link to heading"></a></h4><p>Table name that will be used for registering with Hive. Needs to be same across runs.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: NAME</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Memory-Configurations">Memory Configurations<a class="hash-link" href="#Memory-Configurations" title="Direct link to heading"></a></h3><p>Controls memory usage for compaction and merges, performed internally by Hudi.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieMemoryConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememorymergefraction">hoodie.memory.merge.fraction<a class="hash-link" href="#hoodiememorymergefraction" title="Direct link to heading"></a></h4><p>This fraction is multiplied with the user memory fraction (1 - spark.memory.fraction) to get a final fraction of heap space to use during merge<br>
<strong>Default Value</strong>: 0.6 (Optional)<br>
<code>Config Param: MAX_MEMORY_FRACTION_FOR_MERGE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememorydfsbuffermaxsize">hoodie.memory.dfs.buffer.max.size<a class="hash-link" href="#hoodiememorydfsbuffermaxsize" title="Direct link to heading"></a></h4><p>Property to control the max memory in bytes for dfs input stream buffer size<br>
<strong>Default Value</strong>: 16777216 (Optional)<br>
<code>Config Param: MAX_DFS_STREAM_BUFFER_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememorywritestatusfailurefraction">hoodie.memory.writestatus.failure.fraction<a class="hash-link" href="#hoodiememorywritestatusfailurefraction" title="Direct link to heading"></a></h4><p>Property to control how what fraction of the failed record, exceptions we report back to driver. Default is 10%. If set to 100%, with lot of failures, this can cause memory pressure, cause OOMs and mask actual data errors.<br>
<strong>Default Value</strong>: 0.1 (Optional)<br>
<code>Config Param: WRITESTATUS_FAILURE_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememorycompactionfraction">hoodie.memory.compaction.fraction<a class="hash-link" href="#hoodiememorycompactionfraction" title="Direct link to heading"></a></h4><p>HoodieCompactedLogScanner reads logblocks, converts records to HoodieRecords and then merges these log blocks and records. At any point, the number of entries in a log block can be less than or equal to the number of entries in the corresponding parquet file. This can lead to OOM in the Scanner. Hence, a spillable map helps alleviate the memory pressure. Use this config to set the max allowable inMemory footprint of the spillable map<br>
<strong>Default Value</strong>: 0.6 (Optional)<br>
<code>Config Param: MAX_MEMORY_FRACTION_FOR_COMPACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememorymergemaxsize">hoodie.memory.merge.max.size<a class="hash-link" href="#hoodiememorymergemaxsize" title="Direct link to heading"></a></h4><p>Maximum amount of memory used in bytes for merge operations, before spilling to local storage.<br>
<strong>Default Value</strong>: 1073741824 (Optional)<br>
<code>Config Param: MAX_MEMORY_FOR_MERGE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememoryspillablemappath">hoodie.memory.spillable.map.path<a class="hash-link" href="#hoodiememoryspillablemappath" title="Direct link to heading"></a></h4><p>Default file path prefix for spillable map<br>
<strong>Default Value</strong>: /tmp/ (Optional)<br>
<code>Config Param: SPILLABLE_MAP_BASE_PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiememorycompactionmaxsize">hoodie.memory.compaction.max.size<a class="hash-link" href="#hoodiememorycompactionmaxsize" title="Direct link to heading"></a></h4><p>Maximum amount of memory used in bytes for compaction operations in bytes , before spilling to local storage.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: MAX_MEMORY_FOR_COMPACTION</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="DynamoDB-based-Locks-Configurations">DynamoDB based Locks Configurations<a class="hash-link" href="#DynamoDB-based-Locks-Configurations" title="Direct link to heading"></a></h3><p>Configs that control DynamoDB based locking mechanisms required for concurrency control between writers to a Hudi table. Concurrency between Hudi&#x27;s own table services are auto managed internally.</p><p><code>Config Class</code>: org.apache.hudi.config.DynamoDbBasedLockConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbbilling_mode">hoodie.write.lock.dynamodb.billing_mode<a class="hash-link" href="#hoodiewritelockdynamodbbilling_mode" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, by default it is PAY_PER_REQUEST mode<br>
<strong>Default Value</strong>: PAY_PER_REQUEST (Optional)<br>
<code>Config Param: DYNAMODB_LOCK_BILLING_MODE</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbtable">hoodie.write.lock.dynamodb.table<a class="hash-link" href="#hoodiewritelockdynamodbtable" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, the name of the DynamoDB table acting as lock table<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: DYNAMODB_LOCK_TABLE_NAME</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbregion">hoodie.write.lock.dynamodb.region<a class="hash-link" href="#hoodiewritelockdynamodbregion" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, the region used in endpoint for Amazon DynamoDB service. Would try to first get it from AWS_REGION environment variable. If not find, by default use us-east-1<br>
<strong>Default Value</strong>: us-east-1 (Optional)<br>
<code>Config Param: DYNAMODB_LOCK_REGION</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbpartition_key">hoodie.write.lock.dynamodb.partition_key<a class="hash-link" href="#hoodiewritelockdynamodbpartition_key" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, the partition key for the DynamoDB lock table. Each Hudi dataset should has it&#x27;s unique key so concurrent writers could refer to the same partition key. By default we use the Hudi table name specified to be the partition key<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: DYNAMODB_LOCK_PARTITION_KEY</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbwrite_capacity">hoodie.write.lock.dynamodb.write_capacity<a class="hash-link" href="#hoodiewritelockdynamodbwrite_capacity" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, write capacity units when using PROVISIONED billing mode<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: DYNAMODB_LOCK_WRITE_CAPACITY</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbtable_creation_timeout">hoodie.write.lock.dynamodb.table_creation_timeout<a class="hash-link" href="#hoodiewritelockdynamodbtable_creation_timeout" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, the maximum number of milliseconds to wait for creating DynamoDB table<br>
<strong>Default Value</strong>: 600000 (Optional)<br>
<code>Config Param: DYNAMODB_LOCK_TABLE_CREATION_TIMEOUT</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbread_capacity">hoodie.write.lock.dynamodb.read_capacity<a class="hash-link" href="#hoodiewritelockdynamodbread_capacity" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, read capacity units when using PROVISIONED billing mode<br>
<strong>Default Value</strong>: 20 (Optional)<br>
<code>Config Param: DYNAMODB_LOCK_READ_CAPACITY</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockdynamodbendpoint_url">hoodie.write.lock.dynamodb.endpoint_url<a class="hash-link" href="#hoodiewritelockdynamodbendpoint_url" title="Direct link to heading"></a></h4><p>For DynamoDB based lock provider, the url endpoint used for Amazon DynamoDB service. Useful for development with a local dynamodb instance.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: DYNAMODB_ENDPOINT_URL</code><br>
<code>Since Version: 0.10.1</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Storage-Configs">Storage Configs<a class="hash-link" href="#Storage-Configs" title="Direct link to heading"></a></h3><p>Configurations that control aspects around writing, sizing, reading base and log files.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieStorageConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielogfiledatablockmaxsize">hoodie.logfile.data.block.max.size<a class="hash-link" href="#hoodielogfiledatablockmaxsize" title="Direct link to heading"></a></h4><p>LogFile Data block max size in bytes. This is the maximum size allowed for a single data block to be appended to a log file. This helps to make sure the data appended to the log file is broken up into sizable blocks to prevent from OOM errors. This size should be greater than the JVM memory.<br>
<strong>Default Value</strong>: 268435456 (Optional)<br>
<code>Config Param: LOGFILE_DATA_BLOCK_MAX_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetoutputtimestamptype">hoodie.parquet.outputtimestamptype<a class="hash-link" href="#hoodieparquetoutputtimestamptype" title="Direct link to heading"></a></h4><p>Sets spark.sql.parquet.outputTimestampType. Parquet timestamp type to use when Spark writes data to Parquet files.<br>
<strong>Default Value</strong>: TIMESTAMP_MICROS (Optional)<br>
<code>Config Param: PARQUET_OUTPUT_TIMESTAMP_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieorcstripesize">hoodie.orc.stripe.size<a class="hash-link" href="#hoodieorcstripesize" title="Direct link to heading"></a></h4><p>Size of the memory buffer in bytes for writing<br>
<strong>Default Value</strong>: 67108864 (Optional)<br>
<code>Config Param: ORC_STRIPE_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieorcblocksize">hoodie.orc.block.size<a class="hash-link" href="#hoodieorcblocksize" title="Direct link to heading"></a></h4><p>ORC block size, recommended to be aligned with the target file size.<br>
<strong>Default Value</strong>: 125829120 (Optional)<br>
<code>Config Param: ORC_BLOCK_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieorccompressioncodec">hoodie.orc.compression.codec<a class="hash-link" href="#hoodieorccompressioncodec" title="Direct link to heading"></a></h4><p>Compression codec to use for ORC base files.<br>
<strong>Default Value</strong>: ZLIB (Optional)<br>
<code>Config Param: ORC_COMPRESSION_CODEC_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetmaxfilesize">hoodie.parquet.max.file.size<a class="hash-link" href="#hoodieparquetmaxfilesize" title="Direct link to heading"></a></h4><p>Target size in bytes for parquet files produced by Hudi write phases. For DFS, this needs to be aligned with the underlying filesystem block size for optimal performance.<br>
<strong>Default Value</strong>: 125829120 (Optional)<br>
<code>Config Param: PARQUET_MAX_FILE_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiehfilemaxfilesize">hoodie.hfile.max.file.size<a class="hash-link" href="#hoodiehfilemaxfilesize" title="Direct link to heading"></a></h4><p>Target file size in bytes for HFile base files.<br>
<strong>Default Value</strong>: 125829120 (Optional)<br>
<code>Config Param: HFILE_MAX_FILE_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetwritelegacyformatenabled">hoodie.parquet.writelegacyformat.enabled<a class="hash-link" href="#hoodieparquetwritelegacyformatenabled" title="Direct link to heading"></a></h4><p>Sets spark.sql.parquet.writeLegacyFormat. If true, data will be written in a way of Spark 1.4 and earlier. For example, decimal values will be written in Parquet&#x27;s fixed-length byte array format which other systems such as Apache Hive and Apache Impala use. If false, the newer format in Parquet will be used. For example, decimals will be written in int-based format.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: PARQUET_WRITE_LEGACY_FORMAT_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetblocksize">hoodie.parquet.block.size<a class="hash-link" href="#hoodieparquetblocksize" title="Direct link to heading"></a></h4><p>Parquet RowGroup size in bytes. It&#x27;s recommended to make this large enough that scan costs can be amortized by packing enough column values into a single row group.<br>
<strong>Default Value</strong>: 125829120 (Optional)<br>
<code>Config Param: PARQUET_BLOCK_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielogfilemaxsize">hoodie.logfile.max.size<a class="hash-link" href="#hoodielogfilemaxsize" title="Direct link to heading"></a></h4><p>LogFile max size in bytes. This is the maximum size allowed for a log file before it is rolled over to the next version.<br>
<strong>Default Value</strong>: 1073741824 (Optional)<br>
<code>Config Param: LOGFILE_MAX_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetdictionaryenabled">hoodie.parquet.dictionary.enabled<a class="hash-link" href="#hoodieparquetdictionaryenabled" title="Direct link to heading"></a></h4><p>Whether to use dictionary encoding<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PARQUET_DICTIONARY_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiehfileblocksize">hoodie.hfile.block.size<a class="hash-link" href="#hoodiehfileblocksize" title="Direct link to heading"></a></h4><p>Lower values increase the size in bytes of metadata tracked within HFile, but can offer potentially faster lookup times.<br>
<strong>Default Value</strong>: 1048576 (Optional)<br>
<code>Config Param: HFILE_BLOCK_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetfield_idwriteenabled">hoodie.parquet.field_id.write.enabled<a class="hash-link" href="#hoodieparquetfield_idwriteenabled" title="Direct link to heading"></a></h4><p>Would only be effective with Spark 3.3+. Sets spark.sql.parquet.fieldId.write.enabled. If enabled, Spark will write out parquet native field ids that are stored inside StructField&#x27;s metadata as parquet.field.id to parquet files.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PARQUET_FIELD_ID_WRITE_ENABLED</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetpagesize">hoodie.parquet.page.size<a class="hash-link" href="#hoodieparquetpagesize" title="Direct link to heading"></a></h4><p>Parquet page size in bytes. Page is the unit of read within a parquet file. Within a block, pages are compressed separately.<br>
<strong>Default Value</strong>: 1048576 (Optional)<br>
<code>Config Param: PARQUET_PAGE_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiehfilecompressionalgorithm">hoodie.hfile.compression.algorithm<a class="hash-link" href="#hoodiehfilecompressionalgorithm" title="Direct link to heading"></a></h4><p>Compression codec to use for hfile base files.<br>
<strong>Default Value</strong>: GZ (Optional)<br>
<code>Config Param: HFILE_COMPRESSION_ALGORITHM_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieorcmaxfilesize">hoodie.orc.max.file.size<a class="hash-link" href="#hoodieorcmaxfilesize" title="Direct link to heading"></a></h4><p>Target file size in bytes for ORC base files.<br>
<strong>Default Value</strong>: 125829120 (Optional)<br>
<code>Config Param: ORC_FILE_MAX_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielogfiledatablockformat">hoodie.logfile.data.block.format<a class="hash-link" href="#hoodielogfiledatablockformat" title="Direct link to heading"></a></h4><p>Format of the data block within delta logs. Following formats are currently supported &quot;avro&quot;, &quot;hfile&quot;, &quot;parquet&quot;<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: LOGFILE_DATA_BLOCK_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielogfiletoparquetcompressionratio">hoodie.logfile.to.parquet.compression.ratio<a class="hash-link" href="#hoodielogfiletoparquetcompressionratio" title="Direct link to heading"></a></h4><p>Expected additional compression as records move from log files to parquet. Used for merge_on_read table to send inserts into log files &amp; control the size of compacted parquet file.<br>
<strong>Default Value</strong>: 0.35 (Optional)<br>
<code>Config Param: LOGFILE_TO_PARQUET_COMPRESSION_RATIO_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetcompressionratio">hoodie.parquet.compression.ratio<a class="hash-link" href="#hoodieparquetcompressionratio" title="Direct link to heading"></a></h4><p>Expected compression of parquet data used by Hudi, when it tries to size new parquet files. Increase this value, if bulk_insert is producing smaller than expected sized files<br>
<strong>Default Value</strong>: 0.1 (Optional)<br>
<code>Config Param: PARQUET_COMPRESSION_RATIO_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetcompressioncodec">hoodie.parquet.compression.codec<a class="hash-link" href="#hoodieparquetcompressioncodec" title="Direct link to heading"></a></h4><p>Compression Codec for parquet files<br>
<strong>Default Value</strong>: gzip (Optional)<br>
<code>Config Param: PARQUET_COMPRESSION_CODEC_NAME</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Archival-Configs">Archival Configs<a class="hash-link" href="#Archival-Configs" title="Direct link to heading"></a></h3><p>Configurations that control archival.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieArchivalConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchivemergesmallfilelimitbytes">hoodie.archive.merge.small.file.limit.bytes<a class="hash-link" href="#hoodiearchivemergesmallfilelimitbytes" title="Direct link to heading"></a></h4><p>This config sets the archive file size limit below which an archive file becomes a candidate to be selected as such a small file.<br>
<strong>Default Value</strong>: 20971520 (Optional)<br>
<code>Config Param: ARCHIVE_MERGE_SMALL_FILE_LIMIT_BYTES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekeepmaxcommits">hoodie.keep.max.commits<a class="hash-link" href="#hoodiekeepmaxcommits" title="Direct link to heading"></a></h4><p>Archiving service moves older entries from timeline into an archived log after each write, to keep the metadata overhead constant, even as the table size grows.This config controls the maximum number of instants to retain in the active timeline. <br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: MAX_COMMITS_TO_KEEP</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchivemergeenable">hoodie.archive.merge.enable<a class="hash-link" href="#hoodiearchivemergeenable" title="Direct link to heading"></a></h4><p>When enable, hoodie will auto merge several small archive files into larger one. It&#x27;s useful when storage scheme doesn&#x27;t support append operation.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ARCHIVE_MERGE_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchiveautomatic">hoodie.archive.automatic<a class="hash-link" href="#hoodiearchiveautomatic" title="Direct link to heading"></a></h4><p>When enabled, the archival table service is invoked immediately after each commit, to archive commits if we cross a maximum value of commits. It&#x27;s recommended to enable this, to ensure number of active commits is bounded.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: AUTO_ARCHIVE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchivedeleteparallelism">hoodie.archive.delete.parallelism<a class="hash-link" href="#hoodiearchivedeleteparallelism" title="Direct link to heading"></a></h4><p>Parallelism for deleting archived hoodie commits.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: DELETE_ARCHIVED_INSTANT_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchivebeyondsavepoint">hoodie.archive.beyond.savepoint<a class="hash-link" href="#hoodiearchivebeyondsavepoint" title="Direct link to heading"></a></h4><p>If enabled, archival will proceed beyond savepoint, skipping savepoint commits. If disabled, archival will stop at the earliest savepoint commit.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ARCHIVE_BEYOND_SAVEPOINT</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecommitsarchivalbatch">hoodie.commits.archival.batch<a class="hash-link" href="#hoodiecommitsarchivalbatch" title="Direct link to heading"></a></h4><p>Archiving of instants is batched in best-effort manner, to pack more instants into a single archive log. This config controls such archival batch size.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: COMMITS_ARCHIVAL_BATCH_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchiveasync">hoodie.archive.async<a class="hash-link" href="#hoodiearchiveasync" title="Direct link to heading"></a></h4><p>Only applies when hoodie.archive.automatic is turned on. When turned on runs archiver async with writing, which can speed up overall write performance.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASYNC_ARCHIVE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekeepmincommits">hoodie.keep.min.commits<a class="hash-link" href="#hoodiekeepmincommits" title="Direct link to heading"></a></h4><p>Similar to hoodie.keep.max.commits, but controls the minimum number ofinstants to retain in the active timeline.<br>
<strong>Default Value</strong>: 20 (Optional)<br>
<code>Config Param: MIN_COMMITS_TO_KEEP</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiearchivemergefilesbatchsize">hoodie.archive.merge.files.batch.size<a class="hash-link" href="#hoodiearchivemergefilesbatchsize" title="Direct link to heading"></a></h4><p>The number of small archive files to be merged at once.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: ARCHIVE_MERGE_FILES_BATCH_SIZE</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metadata-Configs">Metadata Configs<a class="hash-link" href="#Metadata-Configs" title="Direct link to heading"></a></h3><p>Configurations used by the Hudi Metadata Table. This table maintains the metadata about a given Hudi table (e.g file listings) to avoid overhead of accessing cloud storage, during queries.</p><p><code>Config Class</code>: org.apache.hudi.common.config.HoodieMetadataConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexcolumnstatsparallelism">hoodie.metadata.index.column.stats.parallelism<a class="hash-link" href="#hoodiemetadataindexcolumnstatsparallelism" title="Direct link to heading"></a></h4><p>Parallelism to use, when generating column stats index.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: COLUMN_STATS_INDEX_PARALLELISM</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatacompactmaxdeltacommits">hoodie.metadata.compact.max.delta.commits<a class="hash-link" href="#hoodiemetadatacompactmaxdeltacommits" title="Direct link to heading"></a></h4><p>Controls how often the metadata table is compacted.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: COMPACT_NUM_DELTA_COMMITS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieassumedatepartitioning">hoodie.assume.date.partitioning<a class="hash-link" href="#hoodieassumedatepartitioning" title="Direct link to heading"></a></h4><p>Should HoodieWriteClient assume the data is partitioned by dates, i.e three levels from base path. This is a stop-gap to support tables created by versions &lt; 0.3.1. Will be removed eventually<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASSUME_DATE_PARTITIONING</code><br>
<code>Since Version: 0.3.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatametricsenable">hoodie.metadata.metrics.enable<a class="hash-link" href="#hoodiemetadatametricsenable" title="Direct link to heading"></a></h4><p>Enable publishing of metrics around metadata table.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: METRICS_ENABLE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexbloomfilterfilegroupcount">hoodie.metadata.index.bloom.filter.file.group.count<a class="hash-link" href="#hoodiemetadataindexbloomfilterfilegroupcount" title="Direct link to heading"></a></h4><p>Metadata bloom filter index partition file group count. This controls the size of the base and log files and read parallelism in the bloom filter index partition. The recommendation is to size the file group count such that the base files are under 1GB.<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: METADATA_INDEX_BLOOM_FILTER_FILE_GROUP_COUNT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="_hoodiemetadataignorespuriousdeletes">_hoodie.metadata.ignore.spurious.deletes<a class="hash-link" href="#_hoodiemetadataignorespuriousdeletes" title="Direct link to heading"></a></h4><p>There are cases when extra files are requested to be deleted from metadata table which are never added before. This config determines how to handle such spurious deletes<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: IGNORE_SPURIOUS_DELETES</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilelistingparallelism">hoodie.file.listing.parallelism<a class="hash-link" href="#hoodiefilelistingparallelism" title="Direct link to heading"></a></h4><p>Parallelism to use, when listing the table on lake storage.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: FILE_LISTING_PARALLELISM_VALUE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexasync">hoodie.metadata.index.async<a class="hash-link" href="#hoodiemetadataindexasync" title="Direct link to heading"></a></h4><p>Enable asynchronous indexing of metadata table.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASYNC_INDEX_ENABLE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexcolumnstatscolumnlist">hoodie.metadata.index.column.stats.column.list<a class="hash-link" href="#hoodiemetadataindexcolumnstatscolumnlist" title="Direct link to heading"></a></h4><p>Comma-separated list of columns for which column stats index will be built. If not set, all columns will be indexed<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: COLUMN_STATS_INDEX_FOR_COLUMNS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataenablefullscanlogfiles">hoodie.metadata.enable.full.scan.log.files<a class="hash-link" href="#hoodiemetadataenablefullscanlogfiles" title="Direct link to heading"></a></h4><p>Enable full scanning of log files while reading log records. If disabled, Hudi does look up of only interested entries.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ENABLE_FULL_SCAN_LOG_FILES</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexbloomfilterenable">hoodie.metadata.index.bloom.filter.enable<a class="hash-link" href="#hoodiemetadataindexbloomfilterenable" title="Direct link to heading"></a></h4><p>Enable indexing bloom filters of user data files under metadata table. When enabled, metadata table will have a partition to store the bloom filter index and will be used during the index lookups.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ENABLE_METADATA_INDEX_BLOOM_FILTER</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatacleanasync">hoodie.metadata.clean.async<a class="hash-link" href="#hoodiemetadatacleanasync" title="Direct link to heading"></a></h4><p>Enable asynchronous cleaning for metadata table<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASYNC_CLEAN_ENABLE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatakeepmaxcommits">hoodie.metadata.keep.max.commits<a class="hash-link" href="#hoodiemetadatakeepmaxcommits" title="Direct link to heading"></a></h4><p>Similar to hoodie.metadata.keep.min.commits, this config controls the maximum number of instants to retain in the active timeline.<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: MAX_COMMITS_TO_KEEP</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatainsertparallelism">hoodie.metadata.insert.parallelism<a class="hash-link" href="#hoodiemetadatainsertparallelism" title="Direct link to heading"></a></h4><p>Parallelism to use when inserting to the metadata table<br>
<strong>Default Value</strong>: 1 (Optional)<br>
<code>Config Param: INSERT_PARALLELISM_VALUE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatadirfilterregex">hoodie.metadata.dir.filter.regex<a class="hash-link" href="#hoodiemetadatadirfilterregex" title="Direct link to heading"></a></h4><p>Directories matching this regex, will be filtered out when initializing metadata table from lake storage for the first time.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: DIR_FILTER_REGEX</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexcolumnstatsprocessingmodeoverride">hoodie.metadata.index.column.stats.processing.mode.override<a class="hash-link" href="#hoodiemetadataindexcolumnstatsprocessingmodeoverride" title="Direct link to heading"></a></h4><p>By default Column Stats Index is automatically determining whether it should be read and processed either&#x27;in-memory&#x27; (w/in executing process) or using Spark (on a cluster), based on some factors like the size of the Index and how many columns are read. This config allows to override this behavior.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: COLUMN_STATS_INDEX_PROCESSING_MODE_OVERRIDE</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatakeepmincommits">hoodie.metadata.keep.min.commits<a class="hash-link" href="#hoodiemetadatakeepmincommits" title="Direct link to heading"></a></h4><p>Archiving service moves older entries from metadata table’s timeline into an archived log after each write, to keep the overhead constant, even as the metadata table size grows. This config controls the minimum number of instants to retain in the active timeline.<br>
<strong>Default Value</strong>: 20 (Optional)<br>
<code>Config Param: MIN_COMMITS_TO_KEEP</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexcolumnstatsinmemoryprojectionthreshold">hoodie.metadata.index.column.stats.inMemory.projection.threshold<a class="hash-link" href="#hoodiemetadataindexcolumnstatsinmemoryprojectionthreshold" title="Direct link to heading"></a></h4><p>When reading Column Stats Index, if the size of the expected resulting projection is below the in-memory threshold (counted by the # of rows), it will be attempted to be loaded &quot;in-memory&quot; (ie not using the execution engine like Spark, Flink, etc). If the value is above the threshold execution engine will be used to compose the projection.<br>
<strong>Default Value</strong>: 100000 (Optional)<br>
<code>Config Param: COLUMN_STATS_INDEX_IN_MEMORY_PROJECTION_THRESHOLD</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexcolumnstatsenable">hoodie.metadata.index.column.stats.enable<a class="hash-link" href="#hoodiemetadataindexcolumnstatsenable" title="Direct link to heading"></a></h4><p>Enable indexing column ranges of user data files under metadata table key lookups. When enabled, metadata table will have a partition to store the column ranges and will be used for pruning files during the index lookups.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ENABLE_METADATA_INDEX_COLUMN_STATS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexbloomfiltercolumnlist">hoodie.metadata.index.bloom.filter.column.list<a class="hash-link" href="#hoodiemetadataindexbloomfiltercolumnlist" title="Direct link to heading"></a></h4><p>Comma-separated list of columns for which bloom filter index will be built. If not set, only record key will be indexed.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BLOOM_FILTER_INDEX_FOR_COLUMNS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatacleanercommitsretained">hoodie.metadata.cleaner.commits.retained<a class="hash-link" href="#hoodiemetadatacleanercommitsretained" title="Direct link to heading"></a></h4><p>Number of commits to retain, without cleaning, on metadata table.<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: CLEANER_COMMITS_RETAINED</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexchecktimeoutseconds">hoodie.metadata.index.check.timeout.seconds<a class="hash-link" href="#hoodiemetadataindexchecktimeoutseconds" title="Direct link to heading"></a></h4><p>After the async indexer has finished indexing upto the base instant, it will ensure that all inflight writers reliably write index updates as well. If this timeout expires, then the indexer will abort itself safely.<br>
<strong>Default Value</strong>: 900 (Optional)<br>
<code>Config Param: METADATA_INDEX_CHECK_TIMEOUT_SECONDS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadatapopulatemetafields">hoodie.metadata.populate.meta.fields<a class="hash-link" href="#hoodiemetadatapopulatemetafields" title="Direct link to heading"></a></h4><p>When enabled, populates all meta fields. When disabled, no meta fields are populated.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: POPULATE_META_FIELDS</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexcolumnstatsfilegroupcount">hoodie.metadata.index.column.stats.file.group.count<a class="hash-link" href="#hoodiemetadataindexcolumnstatsfilegroupcount" title="Direct link to heading"></a></h4><p>Metadata column stats partition file group count. This controls the size of the base and log files and read parallelism in the column stats index partition. The recommendation is to size the file group count such that the base files are under 1GB.<br>
<strong>Default Value</strong>: 2 (Optional)<br>
<code>Config Param: METADATA_INDEX_COLUMN_STATS_FILE_GROUP_COUNT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataenable">hoodie.metadata.enable<a class="hash-link" href="#hoodiemetadataenable" title="Direct link to heading"></a></h4><p>Enable the internal metadata table which serves table metadata like level file listings<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ENABLE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetadataindexbloomfilterparallelism">hoodie.metadata.index.bloom.filter.parallelism<a class="hash-link" href="#hoodiemetadataindexbloomfilterparallelism" title="Direct link to heading"></a></h4><p>Parallelism to use for generating bloom filter index in metadata table.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: BLOOM_FILTER_INDEX_PARALLELISM</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Consistency-Guard-Configurations">Consistency Guard Configurations<a class="hash-link" href="#Consistency-Guard-Configurations" title="Direct link to heading"></a></h3><p>The consistency guard related config options, to help talk to eventually consistent object storage.(Tip: S3 is NOT eventually consistent anymore!)</p><p><code>Config Class</code>: org.apache.hudi.common.fs.ConsistencyGuardConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieoptimisticconsistencyguardsleep_time_ms">hoodie.optimistic.consistency.guard.sleep_time_ms<a class="hash-link" href="#hoodieoptimisticconsistencyguardsleep_time_ms" title="Direct link to heading"></a></h4><p>Amount of time (in ms), to wait after which we assume storage is consistent.<br>
<strong>Default Value</strong>: 500 (Optional)<br>
<code>Config Param: OPTIMISTIC_CONSISTENCY_GUARD_SLEEP_TIME_MS</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckmax_interval_ms">hoodie.consistency.check.max_interval_ms<a class="hash-link" href="#hoodieconsistencycheckmax_interval_ms" title="Direct link to heading"></a></h4><p>Maximum amount of time (in ms), to wait for consistency checking.<br>
<strong>Default Value</strong>: 20000 (Optional)<br>
<code>Config Param: MAX_CHECK_INTERVAL_MS</code><br>
<code>Since Version: 0.5.0</code><br>
<code>Deprecated Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="_hoodieoptimisticconsistencyguardenable">_hoodie.optimistic.consistency.guard.enable<a class="hash-link" href="#_hoodieoptimisticconsistencyguardenable" title="Direct link to heading"></a></h4><p>Enable consistency guard, which optimistically assumes consistency is achieved after a certain time period.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: OPTIMISTIC_CONSISTENCY_GUARD_ENABLE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckenabled">hoodie.consistency.check.enabled<a class="hash-link" href="#hoodieconsistencycheckenabled" title="Direct link to heading"></a></h4><p>Enabled to handle S3 eventual consistency issue. This property is no longer required since S3 is now strongly consistent. Will be removed in the future releases.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ENABLE</code><br>
<code>Since Version: 0.5.0</code><br>
<code>Deprecated Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckmax_checks">hoodie.consistency.check.max_checks<a class="hash-link" href="#hoodieconsistencycheckmax_checks" title="Direct link to heading"></a></h4><p>Maximum number of consistency checks to perform, with exponential backoff.<br>
<strong>Default Value</strong>: 6 (Optional)<br>
<code>Config Param: MAX_CHECKS</code><br>
<code>Since Version: 0.5.0</code><br>
<code>Deprecated Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckinitial_interval_ms">hoodie.consistency.check.initial_interval_ms<a class="hash-link" href="#hoodieconsistencycheckinitial_interval_ms" title="Direct link to heading"></a></h4><p>Amount of time (in ms) to wait, before checking for consistency after an operation on storage.<br>
<strong>Default Value</strong>: 400 (Optional)<br>
<code>Config Param: INITIAL_CHECK_INTERVAL_MS</code><br>
<code>Since Version: 0.5.0</code><br>
<code>Deprecated Version: 0.7.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="FileSystem-Guard-Configurations">FileSystem Guard Configurations<a class="hash-link" href="#FileSystem-Guard-Configurations" title="Direct link to heading"></a></h3><p>The filesystem retry related config options, to help deal with runtime exception like list/get/put/delete performance issues.</p><p><code>Config Class</code>: org.apache.hudi.common.fs.FileSystemRetryConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemoperationretrymax_interval_ms">hoodie.filesystem.operation.retry.max_interval_ms<a class="hash-link" href="#hoodiefilesystemoperationretrymax_interval_ms" title="Direct link to heading"></a></h4><p>Maximum amount of time (in ms), to wait for next retry.<br>
<strong>Default Value</strong>: 2000 (Optional)<br>
<code>Config Param: MAX_RETRY_INTERVAL_MS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemoperationretryenable">hoodie.filesystem.operation.retry.enable<a class="hash-link" href="#hoodiefilesystemoperationretryenable" title="Direct link to heading"></a></h4><p>Enabled to handle list/get/delete etc file system performance issue.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: FILESYSTEM_RETRY_ENABLE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemoperationretrymax_numbers">hoodie.filesystem.operation.retry.max_numbers<a class="hash-link" href="#hoodiefilesystemoperationretrymax_numbers" title="Direct link to heading"></a></h4><p>Maximum number of retry actions to perform, with exponential backoff.<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: MAX_RETRY_NUMBERS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemoperationretryexceptions">hoodie.filesystem.operation.retry.exceptions<a class="hash-link" href="#hoodiefilesystemoperationretryexceptions" title="Direct link to heading"></a></h4><p>The class name of the Exception that needs to be re-tryed, separated by commas. Default is empty which means retry all the IOException and RuntimeException from FileSystem<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: RETRY_EXCEPTIONS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemoperationretryinitial_interval_ms">hoodie.filesystem.operation.retry.initial_interval_ms<a class="hash-link" href="#hoodiefilesystemoperationretryinitial_interval_ms" title="Direct link to heading"></a></h4><p>Amount of time (in ms) to wait, before retry to do operations on storage.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: INITIAL_RETRY_INTERVAL_MS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Write-Configurations">Write Configurations<a class="hash-link" href="#Write-Configurations" title="Direct link to heading"></a></h3><p>Configurations that control write behavior on Hudi tables. These can be directly passed down from even higher level frameworks (e.g Spark datasources, Flink sink) and utilities (e.g DeltaStreamer).</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieWriteConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecombinebeforeupsert">hoodie.combine.before.upsert<a class="hash-link" href="#hoodiecombinebeforeupsert" title="Direct link to heading"></a></h4><p>When upserted records share same key, controls whether they should be first combined (i.e de-duplicated) before writing to storage. This should be turned off only if you are absolutely certain that there are no duplicates incoming, otherwise it can lead to duplicate keys and violate the uniqueness guarantees.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: COMBINE_BEFORE_UPSERT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritemarkerstype">hoodie.write.markers.type<a class="hash-link" href="#hoodiewritemarkerstype" title="Direct link to heading"></a></h4><p>Marker type to use. Two modes are supported: - DIRECT: individual marker file corresponding to each data file is directly created by the writer. - TIMELINE_SERVER_BASED: marker operations are all handled at the timeline service which serves as a proxy. New marker entries are batch processed and stored in a limited number of underlying files for efficiency. If HDFS is used or timeline server is disabled, DIRECT markers are used as fallback even if this is configure. For Spark structured streaming, this configuration does not take effect, i.e., DIRECT markers are always used for Spark structured streaming.<br>
<strong>Default Value</strong>: TIMELINE_SERVER_BASED (Optional)<br>
<code>Config Param: MARKERS_TYPE</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckmax_interval_ms-1">hoodie.consistency.check.max_interval_ms<a class="hash-link" href="#hoodieconsistencycheckmax_interval_ms-1" title="Direct link to heading"></a></h4><p>Max time to wait between successive attempts at performing consistency checks<br>
<strong>Default Value</strong>: 300000 (Optional)<br>
<code>Config Param: MAX_CONSISTENCY_CHECK_INTERVAL_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieembedtimelineserverport">hoodie.embed.timeline.server.port<a class="hash-link" href="#hoodieembedtimelineserverport" title="Direct link to heading"></a></h4><p>Port at which the timeline server listens for requests. When running embedded in each writer, it picks a free port and communicates to all the executors. This should rarely be changed.<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: EMBEDDED_TIMELINE_SERVER_PORT_NUM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieautoadjustlockconfigs">hoodie.auto.adjust.lock.configs<a class="hash-link" href="#hoodieautoadjustlockconfigs" title="Direct link to heading"></a></h4><p>Auto adjust lock configurations when metadata table is enabled and for async table services.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: AUTO_ADJUST_LOCK_CONFIGS</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietableservicesenabled">hoodie.table.services.enabled<a class="hash-link" href="#hoodietableservicesenabled" title="Direct link to heading"></a></h4><p>Master control to disable all table services including archive, clean, compact, cluster, etc.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: TABLE_SERVICES_ENABLED</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablebasefileformat-1">hoodie.table.base.file.format<a class="hash-link" href="#hoodietablebasefileformat-1" title="Direct link to heading"></a></h4><p>Base file format to store all the base file data.<br>
<strong>Default Value</strong>: PARQUET (Optional)<br>
<code>Config Param: BASE_FILE_FORMAT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieavroschemavalidate">hoodie.avro.schema.validate<a class="hash-link" href="#hoodieavroschemavalidate" title="Direct link to heading"></a></h4><p>Validate the schema used for the write against the latest schema, for backwards compatibility.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: AVRO_SCHEMA_VALIDATE_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritebufferlimitbytes">hoodie.write.buffer.limit.bytes<a class="hash-link" href="#hoodiewritebufferlimitbytes" title="Direct link to heading"></a></h4><p>Size of in-memory buffer used for parallelizing network reads and lake storage writes.<br>
<strong>Default Value</strong>: 4194304 (Optional)<br>
<code>Config Param: WRITE_BUFFER_LIMIT_BYTES_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieinsertshuffleparallelism">hoodie.insert.shuffle.parallelism<a class="hash-link" href="#hoodieinsertshuffleparallelism" title="Direct link to heading"></a></h4><p>Parallelism for inserting records into the table. Inserts can shuffle data before writing to tune file sizes and optimize the storage layout.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: INSERT_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieembedtimelineserverasync">hoodie.embed.timeline.server.async<a class="hash-link" href="#hoodieembedtimelineserverasync" title="Direct link to heading"></a></h4><p>Controls whether or not, the requests to the timeline server are processed in asynchronous fashion, potentially improving throughput.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: EMBEDDED_TIMELINE_SERVER_USE_ASYNC_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodierollbackparallelism">hoodie.rollback.parallelism<a class="hash-link" href="#hoodierollbackparallelism" title="Direct link to heading"></a></h4><p>Parallelism for rollback of commits. Rollbacks perform delete of files or logging delete blocks to file groups on storage in parallel.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: ROLLBACK_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritestatusstoragelevel">hoodie.write.status.storage.level<a class="hash-link" href="#hoodiewritestatusstoragelevel" title="Direct link to heading"></a></h4><p>Write status objects hold metadata about a write (stats, errors), that is not yet committed to storage. This controls the how that information is cached for inspection by clients. We rarely expect this to be changed.<br>
<strong>Default Value</strong>: MEMORY_AND_DISK_SER (Optional)<br>
<code>Config Param: WRITE_STATUS_STORAGE_LEVEL_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritestatusclass">hoodie.writestatus.class<a class="hash-link" href="#hoodiewritestatusclass" title="Direct link to heading"></a></h4><p>Subclass of org.apache.hudi.client.WriteStatus to be used to collect information about a write. Can be overridden to collection additional metrics/statistics about the data if needed.<br>
<strong>Default Value</strong>: org.apache.hudi.client.WriteStatus (Optional)<br>
<code>Config Param: WRITE_STATUS_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebasepath">hoodie.base.path<a class="hash-link" href="#hoodiebasepath" title="Direct link to heading"></a></h4><p>Base path on lake storage, under which all the table data is stored. Always prefix it explicitly with the storage scheme (e.g hdfs://, s3:// etc). Hudi stores all the main meta-data about commits, savepoints, cleaning audit logs etc in .hoodie directory under this base path directory.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BASE_PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieallowemptycommit">hoodie.allow.empty.commit<a class="hash-link" href="#hoodieallowemptycommit" title="Direct link to heading"></a></h4><p>Whether to allow generation of empty commits, even if no data was written in the commit. It&#x27;s useful in cases where extra metadata needs to be published regardless e.g tracking source offsets when ingesting data<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ALLOW_EMPTY_COMMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebulkinsertuserdefinedpartitionerclass">hoodie.bulkinsert.user.defined.partitioner.class<a class="hash-link" href="#hoodiebulkinsertuserdefinedpartitionerclass" title="Direct link to heading"></a></h4><p>If specified, this class will be used to re-partition records before they are bulk inserted. This can be used to sort, pack, cluster data optimally for common query patterns. For now we support a build-in user defined bulkinsert partitioner org.apache.hudi.execution.bulkinsert.RDDCustomColumnsSortPartitioner which can does sorting based on specified column values set by hoodie.bulkinsert.user.defined.partitioner.sort.columns<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BULKINSERT_USER_DEFINED_PARTITIONER_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietablename-2">hoodie.table.name<a class="hash-link" href="#hoodietablename-2" title="Direct link to heading"></a></h4><p>Table name that will be used for registering with metastores like HMS. Needs to be same across runs.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TBL_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecombinebeforedelete">hoodie.combine.before.delete<a class="hash-link" href="#hoodiecombinebeforedelete" title="Direct link to heading"></a></h4><p>During delete operations, controls whether we should combine deletes (and potentially also upserts) before writing to storage.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: COMBINE_BEFORE_DELETE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieembedtimelineserverthreads">hoodie.embed.timeline.server.threads<a class="hash-link" href="#hoodieembedtimelineserverthreads" title="Direct link to heading"></a></h4><p>Number of threads to serve requests in the timeline server. By default, auto configured based on the number of underlying cores.<br>
<strong>Default Value</strong>: -1 (Optional)<br>
<code>Config Param: EMBEDDED_TIMELINE_NUM_SERVER_THREADS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefileidprefixproviderclass">hoodie.fileid.prefix.provider.class<a class="hash-link" href="#hoodiefileidprefixproviderclass" title="Direct link to heading"></a></h4><p>File Id Prefix provider class, that implements <code>org.apache.hudi.fileid.FileIdPrefixProvider</code><br>
<strong>Default Value</strong>: org.apache.hudi.table.RandomFileIdPrefixProvider (Optional)<br>
<code>Config Param: FILEID_PREFIX_PROVIDER_CLASS</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefailontimelinearchiving">hoodie.fail.on.timeline.archiving<a class="hash-link" href="#hoodiefailontimelinearchiving" title="Direct link to heading"></a></h4><p>Timeline archiving removes older instants from the timeline, after each write operation, to minimize metadata overhead. Controls whether or not, the write should be failed as well, if such archiving fails.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: FAIL_ON_TIMELINE_ARCHIVING_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratorclass-2">hoodie.datasource.write.keygenerator.class<a class="hash-link" href="#hoodiedatasourcewritekeygeneratorclass-2" title="Direct link to heading"></a></h4><p>Key generator class, that implements <code>org.apache.hudi.keygen.KeyGenerator</code> extract a key out of incoming records.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: KEYGENERATOR_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecombinebeforeinsert">hoodie.combine.before.insert<a class="hash-link" href="#hoodiecombinebeforeinsert" title="Direct link to heading"></a></h4><p>When inserted records share same key, controls whether they should be first combined (i.e de-duplicated) before writing to storage.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: COMBINE_BEFORE_INSERT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieembedtimelineservergzip">hoodie.embed.timeline.server.gzip<a class="hash-link" href="#hoodieembedtimelineservergzip" title="Direct link to heading"></a></h4><p>Controls whether gzip compression is used, for large responses from the timeline server, to improve latency.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: EMBEDDED_TIMELINE_SERVER_COMPRESS_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemarkerstimeline_server_basedbatchinterval_ms">hoodie.markers.timeline_server_based.batch.interval_ms<a class="hash-link" href="#hoodiemarkerstimeline_server_basedbatchinterval_ms" title="Direct link to heading"></a></h4><p>The batch interval in milliseconds for marker creation batch processing<br>
<strong>Default Value</strong>: 50 (Optional)<br>
<code>Config Param: MARKERS_TIMELINE_SERVER_BASED_BATCH_INTERVAL_MS</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieskipdefaultpartitionvalidation">hoodie.skip.default.partition.validation<a class="hash-link" href="#hoodieskipdefaultpartitionvalidation" title="Direct link to heading"></a></h4><p>When table is upgraded from pre 0.12 to 0.12, we check for &quot;default&quot; partition and fail if found one. Users are expected to rewrite the data in those partitions. Enabling this config will bypass this validation<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: SKIP_DEFAULT_PARTITION_VALIDATION</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemarkerstimeline_server_basedbatchnum_threads">hoodie.markers.timeline_server_based.batch.num_threads<a class="hash-link" href="#hoodiemarkerstimeline_server_basedbatchnum_threads" title="Direct link to heading"></a></h4><p>Number of threads to use for batch processing marker creation requests at the timeline server<br>
<strong>Default Value</strong>: 20 (Optional)<br>
<code>Config Param: MARKERS_TIMELINE_SERVER_BASED_BATCH_NUM_THREADS</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="_hoodieallowmultiwriteonsameinstant">_.hoodie.allow.multi.write.on.same.instant<a class="hash-link" href="#_hoodieallowmultiwriteonsameinstant" title="Direct link to heading"></a></h4><br>**Default Value**: false (Optional)<br>`Config Param: ALLOW_MULTI_WRITE_ON_SAME_INSTANT_ENABLE`<br></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepayloadclass-1">hoodie.datasource.write.payload.class<a class="hash-link" href="#hoodiedatasourcewritepayloadclass-1" title="Direct link to heading"></a></h4><p>Payload class used. Override this, if you like to roll your own merge logic, when upserting/inserting. This will render any value set for PRECOMBINE_FIELD_OPT_VAL in-effective<br>
<strong>Default Value</strong>: org.apache.hudi.common.model.OverwriteWithLatestAvroPayload (Optional)<br>
<code>Config Param: WRITE_PAYLOAD_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebulkinsertshuffleparallelism">hoodie.bulkinsert.shuffle.parallelism<a class="hash-link" href="#hoodiebulkinsertshuffleparallelism" title="Direct link to heading"></a></h4><p>For large initial imports using bulk_insert operation, controls the parallelism to use for sort modes or custom partitioning donebefore writing records to the table.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: BULKINSERT_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedeleteshuffleparallelism">hoodie.delete.shuffle.parallelism<a class="hash-link" href="#hoodiedeleteshuffleparallelism" title="Direct link to heading"></a></h4><p>Parallelism used for “delete” operation. Delete operations also performs shuffles, similar to upsert operation.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: DELETE_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckmax_checks-1">hoodie.consistency.check.max_checks<a class="hash-link" href="#hoodieconsistencycheckmax_checks-1" title="Direct link to heading"></a></h4><p>Maximum number of checks, for consistency of written data.<br>
<strong>Default Value</strong>: 7 (Optional)<br>
<code>Config Param: MAX_CONSISTENCY_CHECKS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratortype-1">hoodie.datasource.write.keygenerator.type<a class="hash-link" href="#hoodiedatasourcewritekeygeneratortype-1" title="Direct link to heading"></a></h4><p>Easily configure one the built-in key generators, instead of specifying the key generator class.Currently supports SIMPLE, COMPLEX, TIMESTAMP, CUSTOM, NON_PARTITION, GLOBAL_DELETE
<strong>Note</strong> This is being actively worked on. Please use <code>hoodie.datasource.write.keygenerator.class</code> instead. <br>
<strong>Default Value</strong>: SIMPLE (Optional)<br>
<code>Config Param: KEYGENERATOR_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemergeallowduplicateoninserts">hoodie.merge.allow.duplicate.on.inserts<a class="hash-link" href="#hoodiemergeallowduplicateoninserts" title="Direct link to heading"></a></h4><p>When enabled, we allow duplicate keys even if inserts are routed to merge with an existing file (for ensuring file sizing). This is only relevant for insert operation, since upsert, delete operations will ensure unique key constraints are maintained.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: MERGE_ALLOW_DUPLICATE_ON_INSERTS_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieembedtimelineserverreuseenabled">hoodie.embed.timeline.server.reuse.enabled<a class="hash-link" href="#hoodieembedtimelineserverreuseenabled" title="Direct link to heading"></a></h4><p>Controls whether the timeline server instance should be cached and reused across the JVM (across task lifecycles)to avoid startup costs. This should rarely be changed.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: EMBEDDED_TIMELINE_SERVER_REUSE_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriteprecombinefield-2">hoodie.datasource.write.precombine.field<a class="hash-link" href="#hoodiedatasourcewriteprecombinefield-2" title="Direct link to heading"></a></h4><p>Field used in preCombining before actual write. When two records have the same key value, we will pick the one with the largest value for the precombine field, determined by Object.compareTo(..)<br>
<strong>Default Value</strong>: ts (Optional)<br>
<code>Config Param: PRECOMBINE_FIELD_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebulkinsertsortmode">hoodie.bulkinsert.sort.mode<a class="hash-link" href="#hoodiebulkinsertsortmode" title="Direct link to heading"></a></h4><p>Sorting modes to use for sorting records for bulk insert. This is use when user hoodie.bulkinsert.user.defined.partitioner.classis not configured. Available values are - GLOBAL_SORT: this ensures best file sizes, with lowest memory overhead at cost of sorting. PARTITION_SORT: Strikes a balance by only sorting within a partition, still keeping the memory overhead of writing lowest and best effort file sizing. NONE: No sorting. Fastest and matches <code>spark.write.parquet()</code> in terms of number of files, overheads<br>
<strong>Default Value</strong>: NONE (Optional)<br>
<code>Config Param: BULK_INSERT_SORT_MODE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieavroschema">hoodie.avro.schema<a class="hash-link" href="#hoodieavroschema" title="Direct link to heading"></a></h4><p>Schema string representing the current write schema of the table. Hudi passes this to implementations of HoodieRecordPayload to convert incoming records to avro. This is also used as the write schema evolving records during an update.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: AVRO_SCHEMA_STRING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieautocommit">hoodie.auto.commit<a class="hash-link" href="#hoodieautocommit" title="Direct link to heading"></a></h4><p>Controls whether a write operation should auto commit. This can be turned off to perform inspection of the uncommitted write before deciding to commit.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: AUTO_COMMIT_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieembedtimelineserver">hoodie.embed.timeline.server<a class="hash-link" href="#hoodieembedtimelineserver" title="Direct link to heading"></a></h4><p>When true, spins up an instance of the timeline server (meta server that serves cached file listings, statistics),running on each writer&#x27;s driver process, accepting requests during the write from executors.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: EMBEDDED_TIMELINE_SERVER_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodietimelinelayoutversion-1">hoodie.timeline.layout.version<a class="hash-link" href="#hoodietimelinelayoutversion-1" title="Direct link to heading"></a></h4><p>Controls the layout of the timeline. Version 0 relied on renames, Version 1 (default) models the timeline as an immutable log relying only on atomic writes for object storage.<br>
<strong>Default Value</strong>: 1 (Optional)<br>
<code>Config Param: TIMELINE_LAYOUT_VERSION_NUM</code><br>
<code>Since Version: 0.5.1</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieschemacacheenable">hoodie.schema.cache.enable<a class="hash-link" href="#hoodieschemacacheenable" title="Direct link to heading"></a></h4><p>cache query internalSchemas in driver/executor side<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ENABLE_INTERNAL_SCHEMA_CACHE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieupsertshuffleparallelism">hoodie.upsert.shuffle.parallelism<a class="hash-link" href="#hoodieupsertshuffleparallelism" title="Direct link to heading"></a></h4><p>Parallelism to use for upsert operation on the table. Upserts can shuffle data to perform index lookups, file sizing, bin packing records optimallyinto file groups.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: UPSERT_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewriteschema">hoodie.write.schema<a class="hash-link" href="#hoodiewriteschema" title="Direct link to heading"></a></h4><p>The specified write schema. In most case, we do not need set this parameter, but for the case the write schema is not equal to the specified table schema, we can specify the write schema by this parameter. Used by MergeIntoHoodieTableCommand<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: WRITE_SCHEMA</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodierollbackusingmarkers">hoodie.rollback.using.markers<a class="hash-link" href="#hoodierollbackusingmarkers" title="Direct link to heading"></a></h4><p>Enables a more efficient mechanism for rollbacks based on the marker files generated during the writes. Turned on by default.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ROLLBACK_USING_MARKERS_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemergedatavalidationenabled">hoodie.merge.data.validation.enabled<a class="hash-link" href="#hoodiemergedatavalidationenabled" title="Direct link to heading"></a></h4><p>When enabled, data validation checks are performed during merges to ensure expected number of records after merge operation.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: MERGE_DATA_VALIDATION_CHECK_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieinternalschema">hoodie.internal.schema<a class="hash-link" href="#hoodieinternalschema" title="Direct link to heading"></a></h4><p>Schema string representing the latest schema of the table. Hudi passes this to implementations of evolution of schema<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: INTERNAL_SCHEMA_STRING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclientheartbeattolerablemisses">hoodie.client.heartbeat.tolerable.misses<a class="hash-link" href="#hoodieclientheartbeattolerablemisses" title="Direct link to heading"></a></h4><p>Number of heartbeat misses, before a writer is deemed not alive and all pending writes are aborted.<br>
<strong>Default Value</strong>: 2 (Optional)<br>
<code>Config Param: CLIENT_HEARTBEAT_NUM_TOLERABLE_MISSES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewriteconcurrencymode">hoodie.write.concurrency.mode<a class="hash-link" href="#hoodiewriteconcurrencymode" title="Direct link to heading"></a></h4><p>Enable different concurrency modes. Options are SINGLE_WRITER: Only one active writer to the table. Maximizes throughputOPTIMISTIC_CONCURRENCY_CONTROL: Multiple writers can operate on the table and exactly one of them succeed if a conflict (writes affect the same file group) is detected.<br>
<strong>Default Value</strong>: SINGLE_WRITER (Optional)<br>
<code>Config Param: WRITE_CONCURRENCY_MODE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemarkersdeleteparallelism">hoodie.markers.delete.parallelism<a class="hash-link" href="#hoodiemarkersdeleteparallelism" title="Direct link to heading"></a></h4><p>Determines the parallelism for deleting marker files, which are used to track all files (valid or invalid/partial) written during a write operation. Increase this value if delays are observed, with large batch writes.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: MARKERS_DELETE_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiereleaseresourceoncompletionenable">hoodie.release.resource.on.completion.enable<a class="hash-link" href="#hoodiereleaseresourceoncompletionenable" title="Direct link to heading"></a></h4><p>Control to enable release all persist rdds when the spark job finish.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: RELEASE_RESOURCE_ENABLE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebulkinsertuserdefinedpartitionersortcolumns">hoodie.bulkinsert.user.defined.partitioner.sort.columns<a class="hash-link" href="#hoodiebulkinsertuserdefinedpartitionersortcolumns" title="Direct link to heading"></a></h4><p>Columns to sort the data by when use org.apache.hudi.execution.bulkinsert.RDDCustomColumnsSortPartitioner as user defined partitioner during bulk_insert. For example &#x27;column1,column2&#x27;<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BULKINSERT_USER_DEFINED_PARTITIONER_SORT_COLUMNS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefinalizewriteparallelism">hoodie.finalize.write.parallelism<a class="hash-link" href="#hoodiefinalizewriteparallelism" title="Direct link to heading"></a></h4><p>Parallelism for the write finalization internal operation, which involves removing any partially written files from lake storage, before committing the write. Reduce this value, if the high number of tasks incur delays for smaller tables or low latency writes.<br>
<strong>Default Value</strong>: 200 (Optional)<br>
<code>Config Param: FINALIZE_WRITE_PARALLELISM_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemergesmallfilegroupcandidateslimit">hoodie.merge.small.file.group.candidates.limit<a class="hash-link" href="#hoodiemergesmallfilegroupcandidateslimit" title="Direct link to heading"></a></h4><p>Limits number of file groups, whose base file satisfies small-file limit, to consider for appending records during upsert operation. Only applicable to MOR tables<br>
<strong>Default Value</strong>: 1 (Optional)<br>
<code>Config Param: MERGE_SMALL_FILE_GROUP_CANDIDATES_LIMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclientheartbeatinterval_in_ms">hoodie.client.heartbeat.interval_in_ms<a class="hash-link" href="#hoodieclientheartbeatinterval_in_ms" title="Direct link to heading"></a></h4><p>Writers perform heartbeats to indicate liveness. Controls how often (in ms), such heartbeats are registered to lake storage.<br>
<strong>Default Value</strong>: 60000 (Optional)<br>
<code>Config Param: CLIENT_HEARTBEAT_INTERVAL_IN_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieallowoperationmetadatafield">hoodie.allow.operation.metadata.field<a class="hash-link" href="#hoodieallowoperationmetadatafield" title="Direct link to heading"></a></h4><p>Whether to include &#x27;_hoodie_operation&#x27; in the metadata fields. Once enabled, all the changes of a record are persisted to the delta log directly without merge<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ALLOW_OPERATION_METADATA_FIELD</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieconsistencycheckinitial_interval_ms-1">hoodie.consistency.check.initial_interval_ms<a class="hash-link" href="#hoodieconsistencycheckinitial_interval_ms-1" title="Direct link to heading"></a></h4><p>Initial time between successive attempts to ensure written data&#x27;s metadata is consistent on storage. Grows with exponential backoff after the initial value.<br>
<strong>Default Value</strong>: 2000 (Optional)<br>
<code>Config Param: INITIAL_CONSISTENCY_CHECK_INTERVAL_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieavroschemaexternaltransformation">hoodie.avro.schema.external.transformation<a class="hash-link" href="#hoodieavroschemaexternaltransformation" title="Direct link to heading"></a></h4><p>When enabled, records in older schema are rewritten into newer schema during upsert,delete and background compaction,clustering operations.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: AVRO_EXTERNAL_SCHEMA_TRANSFORMATION_ENABLE</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Key-Generator-Options">Key Generator Options<a class="hash-link" href="#Key-Generator-Options" title="Direct link to heading"></a></h3><p>Hudi maintains keys (record key + partition path) for uniquely identifying a particular record. This config allows developers to setup the Key generator class that will extract these out of incoming records.</p><p><code>Config Class</code>: org.apache.hudi.keygen.constant.KeyGeneratorOptions<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathurlencode-3">hoodie.datasource.write.partitionpath.urlencode<a class="hash-link" href="#hoodiedatasourcewritepartitionpathurlencode-3" title="Direct link to heading"></a></h4><p>Should we url encode the partition path value, before creating the folder structure.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: URL_ENCODE_PARTITIONING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritehive_style_partitioning-3">hoodie.datasource.write.hive_style_partitioning<a class="hash-link" href="#hoodiedatasourcewritehive_style_partitioning-3" title="Direct link to heading"></a></h4><p>Flag to indicate whether to use Hive style partitioning.
If set true, the names of partition folders follow &lt;partition_column_name&gt;=&lt;partition_value&gt; format.
By default false (the names of partition folders are only partition values)<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: HIVE_STYLE_PARTITIONING_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritekeygeneratorconsistentlogicaltimestampenabled-1">hoodie.datasource.write.keygenerator.consistent.logical.timestamp.enabled<a class="hash-link" href="#hoodiedatasourcewritekeygeneratorconsistentlogicaltimestampenabled-1" title="Direct link to heading"></a></h4><p>When set to true, consistent value will be generated for a logical timestamp type column, like timestamp-millis and timestamp-micros, irrespective of whether row-writer is enabled. Disabled by default so as not to break the pipeline that deploy either fully row-writer path or non row-writer path. For example, if it is kept disabled then record key of timestamp type with value <code>2016-12-29 09:54:00</code> will be written as timestamp <code>2016-12-29 09:54:00.0</code> in row-writer path, while it will be written as long value <code>1483023240000000</code> in non row-writer path. If enabled, then the timestamp value will be written in both the cases.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: KEYGENERATOR_CONSISTENT_LOGICAL_TIMESTAMP_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritepartitionpathfield-2">hoodie.datasource.write.partitionpath.field<a class="hash-link" href="#hoodiedatasourcewritepartitionpathfield-2" title="Direct link to heading"></a></h4><p>Partition path field. Value to be used at the partitionPath component of HoodieKey. Actual value ontained by invoking .toString()<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITIONPATH_FIELD_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewriterecordkeyfield-2">hoodie.datasource.write.recordkey.field<a class="hash-link" href="#hoodiedatasourcewriterecordkeyfield-2" title="Direct link to heading"></a></h4><p>Record key field. Value to be used as the <code>recordKey</code> component of <code>HoodieKey</code>.
Actual value will be obtained by invoking .toString() on the field value. Nested fields can be specified using
the dot notation eg: <code>a.b.c</code><br>
<strong>Default Value</strong>: uuid (Optional)<br>
<code>Config Param: RECORDKEY_FIELD_NAME</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="HBase-Index-Configs">HBase Index Configs<a class="hash-link" href="#HBase-Index-Configs" title="Direct link to heading"></a></h3><p>Configurations that control indexing behavior (when HBase based indexing is enabled), which tags incoming records as either inserts or updates to older records.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieHBaseIndexConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasezkport">hoodie.index.hbase.zkport<a class="hash-link" href="#hoodieindexhbasezkport" title="Direct link to heading"></a></h4><p>Only applies if index type is HBASE. HBase ZK Quorum port to connect to<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZKPORT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaseputbatchsizeautocompute">hoodie.index.hbase.put.batch.size.autocompute<a class="hash-link" href="#hoodieindexhbaseputbatchsizeautocompute" title="Direct link to heading"></a></h4><p>Property to set to enable auto computation of put batch size<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: PUT_BATCH_SIZE_AUTO_COMPUTE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasebucketnumber">hoodie.index.hbase.bucket.number<a class="hash-link" href="#hoodieindexhbasebucketnumber" title="Direct link to heading"></a></h4><p>Only applicable when using RebalancedSparkHoodieHBaseIndex, same as hbase regions count can get the best performance<br>
<strong>Default Value</strong>: 8 (Optional)<br>
<code>Config Param: BUCKET_NUMBER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaserollbacksync">hoodie.index.hbase.rollback.sync<a class="hash-link" href="#hoodieindexhbaserollbacksync" title="Direct link to heading"></a></h4><p>When set to true, the rollback method will delete the last failed task index. The default value is false. Because deleting the index will add extra load on the Hbase cluster for each rollback<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ROLLBACK_SYNC_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasemaxqpsperregionserver">hoodie.index.hbase.max.qps.per.region.server<a class="hash-link" href="#hoodieindexhbasemaxqpsperregionserver" title="Direct link to heading"></a></h4><p>Property to set maximum QPS allowed per Region Server. This should be same across various jobs. This is intended to
limit the aggregate QPS generated across various jobs to an Hbase Region Server. It is recommended to set this
value based on global indexing throughput needs and most importantly, how much the HBase installation in use is
able to tolerate without Region Servers going down.<br>
<strong>Default Value</strong>: 1000 (Optional)<br>
<code>Config Param: MAX_QPS_PER_REGION_SERVER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaseminqpsfraction">hoodie.index.hbase.min.qps.fraction<a class="hash-link" href="#hoodieindexhbaseminqpsfraction" title="Direct link to heading"></a></h4><p>Minimum for HBASE_QPS_FRACTION_PROP to stabilize skewed write workloads<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: MIN_QPS_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasezkconnection_timeout_ms">hoodie.index.hbase.zk.connection_timeout_ms<a class="hash-link" href="#hoodieindexhbasezkconnection_timeout_ms" title="Direct link to heading"></a></h4><p>Timeout to use for establishing connection with zookeeper, from HBase client.<br>
<strong>Default Value</strong>: 15000 (Optional)<br>
<code>Config Param: ZK_CONNECTION_TIMEOUT_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasetable">hoodie.index.hbase.table<a class="hash-link" href="#hoodieindexhbasetable" title="Direct link to heading"></a></h4><p>Only applies if index type is HBASE. HBase Table name to use as the index. Hudi stores the row_key and <!-- -->[partition_path, fileID, commitTime]<!-- --> mapping in the table<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TABLENAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasezknodepath">hoodie.index.hbase.zknode.path<a class="hash-link" href="#hoodieindexhbasezknodepath" title="Direct link to heading"></a></h4><p>Only applies if index type is HBASE. This is the root znode that will contain all the znodes created/used by HBase<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZK_NODE_PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasekerberosuserkeytab">hoodie.index.hbase.kerberos.user.keytab<a class="hash-link" href="#hoodieindexhbasekerberosuserkeytab" title="Direct link to heading"></a></h4><p>File name of the kerberos keytab file for connecting to the hbase cluster.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: KERBEROS_USER_KEYTAB</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasezkquorum">hoodie.index.hbase.zkquorum<a class="hash-link" href="#hoodieindexhbasezkquorum" title="Direct link to heading"></a></h4><p>Only applies if index type is HBASE. HBase ZK Quorum url to connect to<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZKQUORUM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaseqpsfraction">hoodie.index.hbase.qps.fraction<a class="hash-link" href="#hoodieindexhbaseqpsfraction" title="Direct link to heading"></a></h4><p>Property to set the fraction of the global share of QPS that should be allocated to this job. Let&#x27;s say there are 3 jobs which have input size in terms of number of rows required for HbaseIndexing as x, 2x, 3x respectively. Then this fraction for the jobs would be (0.17) 1/6, 0.33 (2/6) and 0.5 (3/6) respectively. Default is 50%, which means a total of 2 jobs can run using HbaseIndex without overwhelming Region Servers.<br>
<strong>Default Value</strong>: 0.5 (Optional)<br>
<code>Config Param: QPS_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasezksession_timeout_ms">hoodie.index.hbase.zk.session_timeout_ms<a class="hash-link" href="#hoodieindexhbasezksession_timeout_ms" title="Direct link to heading"></a></h4><p>Session timeout value to use for Zookeeper failure detection, for the HBase client.Lower this value, if you want to fail faster.<br>
<strong>Default Value</strong>: 60000 (Optional)<br>
<code>Config Param: ZK_SESSION_TIMEOUT_MS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaseputbatchsize">hoodie.index.hbase.put.batch.size<a class="hash-link" href="#hoodieindexhbaseputbatchsize" title="Direct link to heading"></a></h4><p>Controls the batch size for performing puts against HBase. Batching improves throughput, by saving round trips.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: PUT_BATCH_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiehbaseindexupdatepartitionpath">hoodie.hbase.index.update.partition.path<a class="hash-link" href="#hoodiehbaseindexupdatepartitionpath" title="Direct link to heading"></a></h4><p>Only applies if index type is HBASE. When an already existing record is upserted to a new partition compared to whats in storage, this config when set, will delete old record in old partition and will insert it as new record in new partition.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: UPDATE_PARTITION_PATH_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasesecurityauthentication">hoodie.index.hbase.security.authentication<a class="hash-link" href="#hoodieindexhbasesecurityauthentication" title="Direct link to heading"></a></h4><p>Property to decide if the hbase cluster secure authentication is enabled or not. Possible values are &#x27;simple&#x27; (no authentication), and &#x27;kerberos&#x27;.<br>
<strong>Default Value</strong>: simple (Optional)<br>
<code>Config Param: SECURITY_AUTHENTICATION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaseqpsallocatorclass">hoodie.index.hbase.qps.allocator.class<a class="hash-link" href="#hoodieindexhbaseqpsallocatorclass" title="Direct link to heading"></a></h4><p>Property to set which implementation of HBase QPS resource allocator to be used, whichcontrols the batching rate dynamically.<br>
<strong>Default Value</strong>: org.apache.hudi.index.hbase.DefaultHBaseQPSResourceAllocator (Optional)<br>
<code>Config Param: QPS_ALLOCATOR_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasegetbatchsize">hoodie.index.hbase.get.batch.size<a class="hash-link" href="#hoodieindexhbasegetbatchsize" title="Direct link to heading"></a></h4><p>Controls the batch size for performing gets against HBase. Batching improves throughput, by saving round trips.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: GET_BATCH_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasezkpathqps_root">hoodie.index.hbase.zkpath.qps_root<a class="hash-link" href="#hoodieindexhbasezkpathqps_root" title="Direct link to heading"></a></h4><p>chroot in zookeeper, to use for all qps allocation co-ordination.<br>
<strong>Default Value</strong>: /QPS_ROOT (Optional)<br>
<code>Config Param: ZKPATH_QPS_ROOT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasemaxqpsfraction">hoodie.index.hbase.max.qps.fraction<a class="hash-link" href="#hoodieindexhbasemaxqpsfraction" title="Direct link to heading"></a></h4><p>Maximum for HBASE_QPS_FRACTION_PROP to stabilize skewed write workloads<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: MAX_QPS_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbaseregionserverkerberosprincipal">hoodie.index.hbase.regionserver.kerberos.principal<a class="hash-link" href="#hoodieindexhbaseregionserverkerberosprincipal" title="Direct link to heading"></a></h4><p>The value of hbase.regionserver.kerberos.principal in hbase cluster.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: REGIONSERVER_PRINCIPAL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasedynamic_qps">hoodie.index.hbase.dynamic_qps<a class="hash-link" href="#hoodieindexhbasedynamic_qps" title="Direct link to heading"></a></h4><p>Property to decide if HBASE_QPS_FRACTION_PROP is dynamically calculated based on write volume.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: COMPUTE_QPS_DYNAMICALLY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasemasterkerberosprincipal">hoodie.index.hbase.master.kerberos.principal<a class="hash-link" href="#hoodieindexhbasemasterkerberosprincipal" title="Direct link to heading"></a></h4><p>The value of hbase.master.kerberos.principal in hbase cluster.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: MASTER_PRINCIPAL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasekerberosuserprincipal">hoodie.index.hbase.kerberos.user.principal<a class="hash-link" href="#hoodieindexhbasekerberosuserprincipal" title="Direct link to heading"></a></h4><p>The kerberos principal name for connecting to the hbase cluster.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: KERBEROS_USER_PRINCIPAL</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasedesired_puts_time_in_secs">hoodie.index.hbase.desired_puts_time_in_secs<a class="hash-link" href="#hoodieindexhbasedesired_puts_time_in_secs" title="Direct link to heading"></a></h4><br>**Default Value**: 600 (Optional)<br>`Config Param: DESIRED_PUTS_TIME_IN_SECONDS`<br></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasesleepmsforputbatch">hoodie.index.hbase.sleep.ms.for.put.batch<a class="hash-link" href="#hoodieindexhbasesleepmsforputbatch" title="Direct link to heading"></a></h4><br>**Default Value**: N/A (Required)<br>`Config Param: SLEEP_MS_FOR_PUT_BATCH`<br></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexhbasesleepmsforgetbatch">hoodie.index.hbase.sleep.ms.for.get.batch<a class="hash-link" href="#hoodieindexhbasesleepmsforgetbatch" title="Direct link to heading"></a></h4><br>**Default Value**: N/A (Required)<br>`Config Param: SLEEP_MS_FOR_GET_BATCH`<br></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Write-commit-pulsar-callback-configs">Write commit pulsar callback configs<a class="hash-link" href="#Write-commit-pulsar-callback-configs" title="Direct link to heading"></a></h3><p>Controls notifications sent to pulsar, on events happening to a hudi table.</p><p><code>Config Class</code>: org.apache.hudi.utilities.callback.pulsar.HoodieWriteCommitPulsarCallbackConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsaroperation-timeout">hoodie.write.commit.callback.pulsar.operation-timeout<a class="hash-link" href="#hoodiewritecommitcallbackpulsaroperation-timeout" title="Direct link to heading"></a></h4><p>Duration of waiting for completing an operation.<br>
<strong>Default Value</strong>: 30s (Optional)<br>
<code>Config Param: OPERATION_TIMEOUT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsartopic">hoodie.write.commit.callback.pulsar.topic<a class="hash-link" href="#hoodiewritecommitcallbackpulsartopic" title="Direct link to heading"></a></h4><p>pulsar topic name to publish timeline activity into.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TOPIC</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarproducerblock-if-queue-full">hoodie.write.commit.callback.pulsar.producer.block-if-queue-full<a class="hash-link" href="#hoodiewritecommitcallbackpulsarproducerblock-if-queue-full" title="Direct link to heading"></a></h4><p>When the queue is full, the method is blocked instead of an exception is thrown.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PRODUCER_BLOCK_QUEUE_FULL</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarproducersend-timeout">hoodie.write.commit.callback.pulsar.producer.send-timeout<a class="hash-link" href="#hoodiewritecommitcallbackpulsarproducersend-timeout" title="Direct link to heading"></a></h4><p>The timeout in each sending to pulsar.<br>
<strong>Default Value</strong>: 30s (Optional)<br>
<code>Config Param: PRODUCER_SEND_TIMEOUT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarbrokerserviceurl">hoodie.write.commit.callback.pulsar.broker.service.url<a class="hash-link" href="#hoodiewritecommitcallbackpulsarbrokerserviceurl" title="Direct link to heading"></a></h4><p>Server&#x27;s url of pulsar cluster, to be used for publishing commit metadata.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BROKER_SERVICE_URL</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarkeepalive-interval">hoodie.write.commit.callback.pulsar.keepalive-interval<a class="hash-link" href="#hoodiewritecommitcallbackpulsarkeepalive-interval" title="Direct link to heading"></a></h4><p>Duration of keeping alive interval for each client broker connection.<br>
<strong>Default Value</strong>: 30s (Optional)<br>
<code>Config Param: KEEPALIVE_INTERVAL</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarproducerpending-total-size">hoodie.write.commit.callback.pulsar.producer.pending-total-size<a class="hash-link" href="#hoodiewritecommitcallbackpulsarproducerpending-total-size" title="Direct link to heading"></a></h4><p>The maximum number of pending messages across partitions.<br>
<strong>Default Value</strong>: 50000 (Optional)<br>
<code>Config Param: PRODUCER_PENDING_SIZE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarrequest-timeout">hoodie.write.commit.callback.pulsar.request-timeout<a class="hash-link" href="#hoodiewritecommitcallbackpulsarrequest-timeout" title="Direct link to heading"></a></h4><p>Duration of waiting for completing a request.<br>
<strong>Default Value</strong>: 60s (Optional)<br>
<code>Config Param: REQUEST_TIMEOUT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarproducerpending-queue-size">hoodie.write.commit.callback.pulsar.producer.pending-queue-size<a class="hash-link" href="#hoodiewritecommitcallbackpulsarproducerpending-queue-size" title="Direct link to heading"></a></h4><p>The maximum size of a queue holding pending messages.<br>
<strong>Default Value</strong>: 1000 (Optional)<br>
<code>Config Param: PRODUCER_PENDING_QUEUE_SIZE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarproducerroute-mode">hoodie.write.commit.callback.pulsar.producer.route-mode<a class="hash-link" href="#hoodiewritecommitcallbackpulsarproducerroute-mode" title="Direct link to heading"></a></h4><p>Message routing logic for producers on partitioned topics.<br>
<strong>Default Value</strong>: RoundRobinPartition (Optional)<br>
<code>Config Param: PRODUCER_ROUTE_MODE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackpulsarconnection-timeout">hoodie.write.commit.callback.pulsar.connection-timeout<a class="hash-link" href="#hoodiewritecommitcallbackpulsarconnection-timeout" title="Direct link to heading"></a></h4><p>Duration of waiting for a connection to a broker to be established.<br>
<strong>Default Value</strong>: 10s (Optional)<br>
<code>Config Param: CONNECTION_TIMEOUT</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Write-commit-Kafka-callback-configs">Write commit Kafka callback configs<a class="hash-link" href="#Write-commit-Kafka-callback-configs" title="Direct link to heading"></a></h3><p>Controls notifications sent to Kafka, on events happening to a hudi table.</p><p><code>Config Class</code>: org.apache.hudi.utilities.callback.kafka.HoodieWriteCommitKafkaCallbackConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackkafkatopic">hoodie.write.commit.callback.kafka.topic<a class="hash-link" href="#hoodiewritecommitcallbackkafkatopic" title="Direct link to heading"></a></h4><p>Kafka topic name to publish timeline activity into.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: TOPIC</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackkafkapartition">hoodie.write.commit.callback.kafka.partition<a class="hash-link" href="#hoodiewritecommitcallbackkafkapartition" title="Direct link to heading"></a></h4><p>It may be desirable to serialize all changes into a single Kafka partition for providing strict ordering. By default, Kafka messages are keyed by table name, which guarantees ordering at the table level, but not globally (or when new partitions are added)<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackkafkaretries">hoodie.write.commit.callback.kafka.retries<a class="hash-link" href="#hoodiewritecommitcallbackkafkaretries" title="Direct link to heading"></a></h4><p>Times to retry the produce. 3 by default<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: RETRIES</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackkafkaacks">hoodie.write.commit.callback.kafka.acks<a class="hash-link" href="#hoodiewritecommitcallbackkafkaacks" title="Direct link to heading"></a></h4><p>kafka acks level, all by default to ensure strong durability.<br>
<strong>Default Value</strong>: all (Optional)<br>
<code>Config Param: ACKS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritecommitcallbackkafkabootstrapservers">hoodie.write.commit.callback.kafka.bootstrap.servers<a class="hash-link" href="#hoodiewritecommitcallbackkafkabootstrapservers" title="Direct link to heading"></a></h4><p>Bootstrap servers of kafka cluster, to be used for publishing commit metadata.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BOOTSTRAP_SERVERS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Locks-Configurations">Locks Configurations<a class="hash-link" href="#Locks-Configurations" title="Direct link to heading"></a></h3><p>Configs that control locking mechanisms required for concurrency control between writers to a Hudi table. Concurrency between Hudi&#x27;s own table services are auto managed internally.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieLockConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockzookeeperbase_path">hoodie.write.lock.zookeeper.base_path<a class="hash-link" href="#hoodiewritelockzookeeperbase_path" title="Direct link to heading"></a></h4><p>The base path on Zookeeper under which to create lock related ZNodes. This should be same for all concurrent writers to the same table<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZK_BASE_PATH</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockzookeeperlock_key">hoodie.write.lock.zookeeper.lock_key<a class="hash-link" href="#hoodiewritelockzookeeperlock_key" title="Direct link to heading"></a></h4><p>Key name under base_path at which to create a ZNode and acquire lock. Final path on zk will look like base_path/lock_key. If this parameter is not set, we would set it as the table name<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZK_LOCK_KEY</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockclientnum_retries">hoodie.write.lock.client.num_retries<a class="hash-link" href="#hoodiewritelockclientnum_retries" title="Direct link to heading"></a></h4><p>Maximum number of times to retry to acquire lock additionally from the lock manager.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: LOCK_ACQUIRE_CLIENT_NUM_RETRIES</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockwait_time_ms_between_retry">hoodie.write.lock.wait_time_ms_between_retry<a class="hash-link" href="#hoodiewritelockwait_time_ms_between_retry" title="Direct link to heading"></a></h4><p>Initial amount of time to wait between retries to acquire locks, subsequent retries will exponentially backoff.<br>
<strong>Default Value</strong>: 1000 (Optional)<br>
<code>Config Param: LOCK_ACQUIRE_RETRY_WAIT_TIME_IN_MILLIS</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelocknum_retries">hoodie.write.lock.num_retries<a class="hash-link" href="#hoodiewritelocknum_retries" title="Direct link to heading"></a></h4><p>Maximum number of times to retry lock acquire, at each lock provider<br>
<strong>Default Value</strong>: 15 (Optional)<br>
<code>Config Param: LOCK_ACQUIRE_NUM_RETRIES</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockwait_time_ms">hoodie.write.lock.wait_time_ms<a class="hash-link" href="#hoodiewritelockwait_time_ms" title="Direct link to heading"></a></h4><p>Timeout in ms, to wait on an individual lock acquire() call, at the lock provider.<br>
<strong>Default Value</strong>: 60000 (Optional)<br>
<code>Config Param: LOCK_ACQUIRE_WAIT_TIMEOUT_MS</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockzookeeperconnection_timeout_ms">hoodie.write.lock.zookeeper.connection_timeout_ms<a class="hash-link" href="#hoodiewritelockzookeeperconnection_timeout_ms" title="Direct link to heading"></a></h4><p>Timeout in ms, to wait for establishing connection with Zookeeper.<br>
<strong>Default Value</strong>: 15000 (Optional)<br>
<code>Config Param: ZK_CONNECTION_TIMEOUT_MS</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockzookeeperport">hoodie.write.lock.zookeeper.port<a class="hash-link" href="#hoodiewritelockzookeeperport" title="Direct link to heading"></a></h4><p>Zookeeper port to connect to.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZK_PORT</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockhivemetastoretable">hoodie.write.lock.hivemetastore.table<a class="hash-link" href="#hoodiewritelockhivemetastoretable" title="Direct link to heading"></a></h4><p>For Hive based lock provider, the Hive table to acquire lock against<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_TABLE_NAME</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockzookeeperurl">hoodie.write.lock.zookeeper.url<a class="hash-link" href="#hoodiewritelockzookeeperurl" title="Direct link to heading"></a></h4><p>Zookeeper URL to connect to.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: ZK_CONNECT_URL</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockfilesystemexpire">hoodie.write.lock.filesystem.expire<a class="hash-link" href="#hoodiewritelockfilesystemexpire" title="Direct link to heading"></a></h4><p>For DFS based lock providers, expire time in minutes, must be a nonnegative number, default means no expire<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: FILESYSTEM_LOCK_EXPIRE</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockfilesystempath">hoodie.write.lock.filesystem.path<a class="hash-link" href="#hoodiewritelockfilesystempath" title="Direct link to heading"></a></h4><p>For DFS based lock providers, path to store the locks under. use Table&#x27;s meta path as default<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: FILESYSTEM_LOCK_PATH</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockprovider">hoodie.write.lock.provider<a class="hash-link" href="#hoodiewritelockprovider" title="Direct link to heading"></a></h4><p>Lock provider class name, user can provide their own implementation of LockProvider which should be subclass of org.apache.hudi.common.lock.LockProvider<br>
<strong>Default Value</strong>: org.apache.hudi.client.transaction.lock.ZookeeperBasedLockProvider (Optional)<br>
<code>Config Param: LOCK_PROVIDER_CLASS_NAME</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockzookeepersession_timeout_ms">hoodie.write.lock.zookeeper.session_timeout_ms<a class="hash-link" href="#hoodiewritelockzookeepersession_timeout_ms" title="Direct link to heading"></a></h4><p>Timeout in ms, to wait after losing connection to ZooKeeper, before the session is expired<br>
<strong>Default Value</strong>: 60000 (Optional)<br>
<code>Config Param: ZK_SESSION_TIMEOUT_MS</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockconflictresolutionstrategy">hoodie.write.lock.conflict.resolution.strategy<a class="hash-link" href="#hoodiewritelockconflictresolutionstrategy" title="Direct link to heading"></a></h4><p>Lock provider class name, this should be subclass of org.apache.hudi.client.transaction.ConflictResolutionStrategy<br>
<strong>Default Value</strong>: org.apache.hudi.client.transaction.SimpleConcurrentFileWritesConflictResolutionStrategy (Optional)<br>
<code>Config Param: WRITE_CONFLICT_RESOLUTION_STRATEGY_CLASS_NAME</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockhivemetastoredatabase">hoodie.write.lock.hivemetastore.database<a class="hash-link" href="#hoodiewritelockhivemetastoredatabase" title="Direct link to heading"></a></h4><p>For Hive based lock provider, the Hive database to acquire lock against<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_DATABASE_NAME</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockhivemetastoreuris">hoodie.write.lock.hivemetastore.uris<a class="hash-link" href="#hoodiewritelockhivemetastoreuris" title="Direct link to heading"></a></h4><p>For Hive based lock provider, the Hive metastore URI to acquire locks against.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HIVE_METASTORE_URI</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockmax_wait_time_ms_between_retry">hoodie.write.lock.max_wait_time_ms_between_retry<a class="hash-link" href="#hoodiewritelockmax_wait_time_ms_between_retry" title="Direct link to heading"></a></h4><p>Maximum amount of time to wait between retries by lock provider client. This bounds the maximum delay from the exponential backoff. Currently used by ZK based lock provider only.<br>
<strong>Default Value</strong>: 5000 (Optional)<br>
<code>Config Param: LOCK_ACQUIRE_RETRY_MAX_WAIT_TIME_IN_MILLIS</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiewritelockclientwait_time_ms_between_retry">hoodie.write.lock.client.wait_time_ms_between_retry<a class="hash-link" href="#hoodiewritelockclientwait_time_ms_between_retry" title="Direct link to heading"></a></h4><p>Amount of time to wait between retries on the lock provider by the lock manager<br>
<strong>Default Value</strong>: 10000 (Optional)<br>
<code>Config Param: LOCK_ACQUIRE_CLIENT_RETRY_WAIT_TIME_IN_MILLIS</code><br>
<code>Since Version: 0.8.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Compaction-Configs">Compaction Configs<a class="hash-link" href="#Compaction-Configs" title="Direct link to heading"></a></h3><p>Configurations that control compaction (merging of log files onto a new base files).</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieCompactionConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionlazyblockread">hoodie.compaction.lazy.block.read<a class="hash-link" href="#hoodiecompactionlazyblockread" title="Direct link to heading"></a></h4><p>When merging the delta log files, this config helps to choose whether the log blocks should be read lazily or not. Choose true to use lazy block reading (low memory usage, but incurs seeks to each block header) or false for immediate block read (higher memory usage)<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: COMPACTION_LAZY_BLOCK_READ_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieparquetsmallfilelimit">hoodie.parquet.small.file.limit<a class="hash-link" href="#hoodieparquetsmallfilelimit" title="Direct link to heading"></a></h4><p>During upsert operation, we opportunistically expand existing small files on storage, instead of writing new files, to keep number of files to an optimum. This config sets the file size limit below which a file on storage becomes a candidate to be selected as such a <code>small file</code>. By default, treat any file &lt;= 100MB as a small file. Also note that if this set &lt;= 0, will not try to get small files and directly write new files<br>
<strong>Default Value</strong>: 104857600 (Optional)<br>
<code>Config Param: PARQUET_SMALL_FILE_LIMIT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionstrategy">hoodie.compaction.strategy<a class="hash-link" href="#hoodiecompactionstrategy" title="Direct link to heading"></a></h4><p>Compaction strategy decides which file groups are picked up for compaction during each compaction run. By default. Hudi picks the log file with most accumulated unmerged data<br>
<strong>Default Value</strong>: org.apache.hudi.table.action.compact.strategy.LogFileSizeBasedCompactionStrategy (Optional)<br>
<code>Config Param: COMPACTION_STRATEGY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecopyonwriterecordsizeestimate">hoodie.copyonwrite.record.size.estimate<a class="hash-link" href="#hoodiecopyonwriterecordsizeestimate" title="Direct link to heading"></a></h4><p>The average record size. If not explicitly specified, hudi will compute the record size estimate compute dynamically based on commit metadata. This is critical in computing the insert parallelism and bin-packing inserts into small files.<br>
<strong>Default Value</strong>: 1024 (Optional)<br>
<code>Config Param: COPY_ON_WRITE_RECORD_SIZE_ESTIMATE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactinlinemaxdeltaseconds">hoodie.compact.inline.max.delta.seconds<a class="hash-link" href="#hoodiecompactinlinemaxdeltaseconds" title="Direct link to heading"></a></h4><p>Number of elapsed seconds after the last compaction, before scheduling a new one.<br>
<strong>Default Value</strong>: 3600 (Optional)<br>
<code>Config Param: INLINE_COMPACT_TIME_DELTA_SECONDS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactiontargetio">hoodie.compaction.target.io<a class="hash-link" href="#hoodiecompactiontargetio" title="Direct link to heading"></a></h4><p>Amount of MBs to spend during compaction run for the LogFileSizeBasedCompactionStrategy. This value helps bound ingestion latency while compaction is run inline mode.<br>
<strong>Default Value</strong>: 512000 (Optional)<br>
<code>Config Param: TARGET_IO_PER_COMPACTION_IN_MB</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionlogfilesizethreshold">hoodie.compaction.logfile.size.threshold<a class="hash-link" href="#hoodiecompactionlogfilesizethreshold" title="Direct link to heading"></a></h4><p>Only if the log file size is greater than the threshold in bytes, the file group will be compacted.<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: COMPACTION_LOG_FILE_SIZE_THRESHOLD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionpreservecommitmetadata">hoodie.compaction.preserve.commit.metadata<a class="hash-link" href="#hoodiecompactionpreservecommitmetadata" title="Direct link to heading"></a></h4><p>When rewriting data, preserves existing hoodie_commit_time<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PRESERVE_COMMIT_METADATA</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecopyonwriteinsertautosplit">hoodie.copyonwrite.insert.auto.split<a class="hash-link" href="#hoodiecopyonwriteinsertautosplit" title="Direct link to heading"></a></h4><p>Config to control whether we control insert split sizes automatically based on average record sizes. It&#x27;s recommended to keep this turned on, since hand tuning is otherwise extremely cumbersome.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: COPY_ON_WRITE_AUTO_SPLIT_INSERTS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactinlinemaxdeltacommits">hoodie.compact.inline.max.delta.commits<a class="hash-link" href="#hoodiecompactinlinemaxdeltacommits" title="Direct link to heading"></a></h4><p>Number of delta commits after the last compaction, before scheduling of a new compaction is attempted.<br>
<strong>Default Value</strong>: 5 (Optional)<br>
<code>Config Param: INLINE_COMPACT_NUM_DELTA_COMMITS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodierecordsizeestimationthreshold">hoodie.record.size.estimation.threshold<a class="hash-link" href="#hoodierecordsizeestimationthreshold" title="Direct link to heading"></a></h4><p>We use the previous commits&#x27; metadata to calculate the estimated record size and use it to bin pack records into partitions. If the previous commit is too small to make an accurate estimation, Hudi will search commits in the reverse order, until we find a commit that has totalBytesWritten larger than (PARQUET_SMALL_FILE_LIMIT_BYTES * this_threshold)<br>
<strong>Default Value</strong>: 1.0 (Optional)<br>
<code>Config Param: RECORD_SIZE_ESTIMATION_THRESHOLD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactinlinetriggerstrategy">hoodie.compact.inline.trigger.strategy<a class="hash-link" href="#hoodiecompactinlinetriggerstrategy" title="Direct link to heading"></a></h4><p>Controls how compaction scheduling is triggered, by time or num delta commits or combination of both. Valid options: NUM_COMMITS,NUM_COMMITS_AFTER_LAST_REQUEST,TIME_ELAPSED,NUM_AND_TIME,NUM_OR_TIME<br>
<strong>Default Value</strong>: NUM_COMMITS (Optional)<br>
<code>Config Param: INLINE_COMPACT_TRIGGER_STRATEGY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionreverselogread">hoodie.compaction.reverse.log.read<a class="hash-link" href="#hoodiecompactionreverselogread" title="Direct link to heading"></a></h4><p>HoodieLogFormatReader reads a logfile in the forward direction starting from pos=0 to pos=file_length. If this config is set to true, the reader reads the logfile in reverse direction, from pos=file_length to pos=0<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: COMPACTION_REVERSE_LOG_READ_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecopyonwriteinsertsplitsize">hoodie.copyonwrite.insert.split.size<a class="hash-link" href="#hoodiecopyonwriteinsertsplitsize" title="Direct link to heading"></a></h4><p>Number of inserts assigned for each partition/bucket for writing. We based the default on writing out 100MB files, with at least 1kb records (100K records per file), and over provision to 500K. As long as auto-tuning of splits is turned on, this only affects the first write, where there is no history to learn record sizes from.<br>
<strong>Default Value</strong>: 500000 (Optional)<br>
<code>Config Param: COPY_ON_WRITE_INSERT_SPLIT_SIZE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactscheduleinline">hoodie.compact.schedule.inline<a class="hash-link" href="#hoodiecompactscheduleinline" title="Direct link to heading"></a></h4><p>When set to true, compaction service will be attempted for inline scheduling after each write. Users have to ensure they have a separate job to run async compaction(execution) for the one scheduled by this writer. Users can choose to set both <code>hoodie.compact.inline</code> and <code>hoodie.compact.schedule.inline</code> to false and have both scheduling and execution triggered by any async process. But if <code>hoodie.compact.inline</code> is set to false, and <code>hoodie.compact.schedule.inline</code> is set to true, regular writers will schedule compaction inline, but users are expected to trigger async job for execution. If <code>hoodie.compact.inline</code> is set to true, regular writers will do both scheduling and execution inline for compaction<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: SCHEDULE_INLINE_COMPACT</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactiondaybasedtargetpartitions">hoodie.compaction.daybased.target.partitions<a class="hash-link" href="#hoodiecompactiondaybasedtargetpartitions" title="Direct link to heading"></a></h4><p>Used by org.apache.hudi.io.compact.strategy.DayBasedCompactionStrategy to denote the number of latest partitions to compact during a compaction run.<br>
<strong>Default Value</strong>: 10 (Optional)<br>
<code>Config Param: TARGET_PARTITIONS_PER_DAYBASED_COMPACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactinline">hoodie.compact.inline<a class="hash-link" href="#hoodiecompactinline" title="Direct link to heading"></a></h4><p>When set to true, compaction service is triggered after each write. While being simpler operationally, this adds extra latency on the write path.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INLINE_COMPACT</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="File-System-View-Storage-Configurations">File System View Storage Configurations<a class="hash-link" href="#File-System-View-Storage-Configurations" title="Direct link to heading"></a></h3><p>Configurations that control how file metadata is stored by Hudi, for transaction processing and queries.</p><p><code>Config Class</code>: org.apache.hudi.common.table.view.FileSystemViewStorageConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremoteretryexceptions">hoodie.filesystem.view.remote.retry.exceptions<a class="hash-link" href="#hoodiefilesystemviewremoteretryexceptions" title="Direct link to heading"></a></h4><p>The class name of the Exception that needs to be re-tryed, separated by commas. Default is empty which means retry all the IOException and RuntimeException from Remote Request.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: RETRY_EXCEPTIONS</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremoteretryinitial_interval_ms">hoodie.filesystem.view.remote.retry.initial_interval_ms<a class="hash-link" href="#hoodiefilesystemviewremoteretryinitial_interval_ms" title="Direct link to heading"></a></h4><p>Amount of time (in ms) to wait, before retry to do operations on storage.<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: REMOTE_INITIAL_RETRY_INTERVAL_MS</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewspillablereplacedmemfraction">hoodie.filesystem.view.spillable.replaced.mem.fraction<a class="hash-link" href="#hoodiefilesystemviewspillablereplacedmemfraction" title="Direct link to heading"></a></h4><p>Fraction of the file system view memory, to be used for holding replace commit related metadata.<br>
<strong>Default Value</strong>: 0.01 (Optional)<br>
<code>Config Param: SPILLABLE_REPLACED_MEM_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewspillabledir">hoodie.filesystem.view.spillable.dir<a class="hash-link" href="#hoodiefilesystemviewspillabledir" title="Direct link to heading"></a></h4><p>Path on local storage to use, when file system view is held in a spillable map.<br>
<strong>Default Value</strong>: /tmp/ (Optional)<br>
<code>Config Param: SPILLABLE_DIR</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemremotebackupviewenable">hoodie.filesystem.remote.backup.view.enable<a class="hash-link" href="#hoodiefilesystemremotebackupviewenable" title="Direct link to heading"></a></h4><p>Config to control whether backup needs to be configured if clients were not able to reach timeline service.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: REMOTE_BACKUP_VIEW_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewspillablecompactionmemfraction">hoodie.filesystem.view.spillable.compaction.mem.fraction<a class="hash-link" href="#hoodiefilesystemviewspillablecompactionmemfraction" title="Direct link to heading"></a></h4><p>Fraction of the file system view memory, to be used for holding compaction related metadata.<br>
<strong>Default Value</strong>: 0.8 (Optional)<br>
<code>Config Param: SPILLABLE_COMPACTION_MEM_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremoteretrymax_numbers">hoodie.filesystem.view.remote.retry.max_numbers<a class="hash-link" href="#hoodiefilesystemviewremoteretrymax_numbers" title="Direct link to heading"></a></h4><p>Maximum number of retry for API requests against a remote file system view. e.g timeline server.<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: REMOTE_MAX_RETRY_NUMBERS</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewspillablemem">hoodie.filesystem.view.spillable.mem<a class="hash-link" href="#hoodiefilesystemviewspillablemem" title="Direct link to heading"></a></h4><p>Amount of memory to be used in bytes for holding file system view, before spilling to disk.<br>
<strong>Default Value</strong>: 104857600 (Optional)<br>
<code>Config Param: SPILLABLE_MEMORY</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewsecondarytype">hoodie.filesystem.view.secondary.type<a class="hash-link" href="#hoodiefilesystemviewsecondarytype" title="Direct link to heading"></a></h4><p>Specifies the secondary form of storage for file system view, if the primary (e.g timeline server) is unavailable.<br>
<strong>Default Value</strong>: MEMORY (Optional)<br>
<code>Config Param: SECONDARY_VIEW_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremoteretryenable">hoodie.filesystem.view.remote.retry.enable<a class="hash-link" href="#hoodiefilesystemviewremoteretryenable" title="Direct link to heading"></a></h4><p>Whether to enable API request retry for remote file system view.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: REMOTE_RETRY_ENABLE</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremotehost">hoodie.filesystem.view.remote.host<a class="hash-link" href="#hoodiefilesystemviewremotehost" title="Direct link to heading"></a></h4><p>We expect this to be rarely hand configured.<br>
<strong>Default Value</strong>: localhost (Optional)<br>
<code>Config Param: REMOTE_HOST_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremoteretrymax_interval_ms">hoodie.filesystem.view.remote.retry.max_interval_ms<a class="hash-link" href="#hoodiefilesystemviewremoteretrymax_interval_ms" title="Direct link to heading"></a></h4><p>Maximum amount of time (in ms), to wait for next retry.<br>
<strong>Default Value</strong>: 2000 (Optional)<br>
<code>Config Param: REMOTE_MAX_RETRY_INTERVAL_MS</code><br>
<code>Since Version: 0.12.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewtype">hoodie.filesystem.view.type<a class="hash-link" href="#hoodiefilesystemviewtype" title="Direct link to heading"></a></h4><p>File system view provides APIs for viewing the files on the underlying lake storage, as file groups and file slices. This config controls how such a view is held. Options include MEMORY,SPILLABLE_DISK,EMBEDDED_KV_STORE,REMOTE_ONLY,REMOTE_FIRST which provide different trade offs for memory usage and API request performance.<br>
<strong>Default Value</strong>: MEMORY (Optional)<br>
<code>Config Param: VIEW_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremotetimeoutsecs">hoodie.filesystem.view.remote.timeout.secs<a class="hash-link" href="#hoodiefilesystemviewremotetimeoutsecs" title="Direct link to heading"></a></h4><p>Timeout in seconds, to wait for API requests against a remote file system view. e.g timeline server.<br>
<strong>Default Value</strong>: 300 (Optional)<br>
<code>Config Param: REMOTE_TIMEOUT_SECS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewremoteport">hoodie.filesystem.view.remote.port<a class="hash-link" href="#hoodiefilesystemviewremoteport" title="Direct link to heading"></a></h4><p>Port to serve file system view queries, when remote. We expect this to be rarely hand configured.<br>
<strong>Default Value</strong>: 26754 (Optional)<br>
<code>Config Param: REMOTE_PORT_NUM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewspillablebootstrapbasefilememfraction">hoodie.filesystem.view.spillable.bootstrap.base.file.mem.fraction<a class="hash-link" href="#hoodiefilesystemviewspillablebootstrapbasefilememfraction" title="Direct link to heading"></a></h4><p>Fraction of the file system view memory, to be used for holding mapping to bootstrap base files.<br>
<strong>Default Value</strong>: 0.05 (Optional)<br>
<code>Config Param: BOOTSTRAP_BASE_FILE_MEM_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewspillableclusteringmemfraction">hoodie.filesystem.view.spillable.clustering.mem.fraction<a class="hash-link" href="#hoodiefilesystemviewspillableclusteringmemfraction" title="Direct link to heading"></a></h4><p>Fraction of the file system view memory, to be used for holding clustering related metadata.<br>
<strong>Default Value</strong>: 0.01 (Optional)<br>
<code>Config Param: SPILLABLE_CLUSTERING_MEM_FRACTION</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewrocksdbbasepath">hoodie.filesystem.view.rocksdb.base.path<a class="hash-link" href="#hoodiefilesystemviewrocksdbbasepath" title="Direct link to heading"></a></h4><p>Path on local storage to use, when storing file system view in embedded kv store/rocksdb.<br>
<strong>Default Value</strong>: /tmp/hoodie_timeline_rocksdb (Optional)<br>
<code>Config Param: ROCKSDB_BASE_PATH</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiefilesystemviewincrtimelinesyncenable">hoodie.filesystem.view.incr.timeline.sync.enable<a class="hash-link" href="#hoodiefilesystemviewincrtimelinesyncenable" title="Direct link to heading"></a></h4><p>Controls whether or not, the file system view is incrementally updated as new actions are performed on the timeline.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INCREMENTAL_TIMELINE_SYNC_ENABLE</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Index-Configs">Index Configs<a class="hash-link" href="#Index-Configs" title="Direct link to heading"></a></h3><p>Configurations that control indexing behavior, which tags incoming records as either inserts or updates to older records.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieIndexConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexbloomnum_entries">hoodie.index.bloom.num_entries<a class="hash-link" href="#hoodieindexbloomnum_entries" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM. This is the number of entries to be stored in the bloom filter. The rationale for the default: Assume the maxParquetFileSize is 128MB and averageRecordSize is 1kb and hence we approx a total of 130K records in a file. The default (60000) is roughly half of this approximation. Warning: Setting this very low, will generate a lot of false positives and index lookup will have to scan a lot more files than it has to and setting this to a very high number will increase the size every base file linearly (roughly 4KB for every 50000 entries). This config is also used with DYNAMIC bloom filter which determines the initial size for the bloom.<br>
<strong>Default Value</strong>: 60000 (Optional)<br>
<code>Config Param: BLOOM_FILTER_NUM_ENTRIES_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexkeysperbucket">hoodie.bloom.index.keys.per.bucket<a class="hash-link" href="#hoodiebloomindexkeysperbucket" title="Direct link to heading"></a></h4><p>Only applies if bloomIndexBucketizedChecking is enabled and index type is bloom. This configuration controls the “bucket” size which tracks the number of record-key checks made against a single file and is the unit of work allocated to each partition performing bloom filter lookup. A higher value would amortize the fixed cost of reading a bloom filter to memory.<br>
<strong>Default Value</strong>: 10000000 (Optional)<br>
<code>Config Param: BLOOM_INDEX_KEYS_PER_BUCKET</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiesimpleindexinputstoragelevel">hoodie.simple.index.input.storage.level<a class="hash-link" href="#hoodiesimpleindexinputstoragelevel" title="Direct link to heading"></a></h4><p>Only applies when #simpleIndexUseCaching is set. Determine what level of persistence is used to cache input RDDs. Refer to org.apache.spark.storage.StorageLevel for different values<br>
<strong>Default Value</strong>: MEMORY_AND_DISK_SER (Optional)<br>
<code>Config Param: SIMPLE_INDEX_INPUT_STORAGE_LEVEL_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiesimpleindexparallelism">hoodie.simple.index.parallelism<a class="hash-link" href="#hoodiesimpleindexparallelism" title="Direct link to heading"></a></h4><p>Only applies if index type is SIMPLE. This is the amount of parallelism for index lookup, which involves a Spark Shuffle<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: SIMPLE_INDEX_PARALLELISM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieglobalsimpleindexparallelism">hoodie.global.simple.index.parallelism<a class="hash-link" href="#hoodieglobalsimpleindexparallelism" title="Direct link to heading"></a></h4><p>Only applies if index type is GLOBAL_SIMPLE. This is the amount of parallelism for index lookup, which involves a Spark Shuffle<br>
<strong>Default Value</strong>: 100 (Optional)<br>
<code>Config Param: GLOBAL_SIMPLE_INDEX_PARALLELISM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiesimpleindexupdatepartitionpath">hoodie.simple.index.update.partition.path<a class="hash-link" href="#hoodiesimpleindexupdatepartitionpath" title="Direct link to heading"></a></h4><p>Similar to Key: &#x27;hoodie.bloom.index.update.partition.path&#x27; , default: true description: Only applies if index type is GLOBAL_BLOOM. When set to true, an update including the partition path of a record that already exists will result in inserting the incoming record into the new partition and deleting the original record in the old partition. When set to false, the original record will only be updated in the old partition since version: version is not defined deprecated after: version is not defined), but for simple index.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: SIMPLE_INDEX_UPDATE_PARTITION_PATH_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebucketindexnumbuckets-1">hoodie.bucket.index.num.buckets<a class="hash-link" href="#hoodiebucketindexnumbuckets-1" title="Direct link to heading"></a></h4><p>Only applies if index type is BUCKET. Determine the number of buckets in the hudi table, and each partition is divided to N buckets.<br>
<strong>Default Value</strong>: 256 (Optional)<br>
<code>Config Param: BUCKET_INDEX_NUM_BUCKETS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebucketindexhashfield-1">hoodie.bucket.index.hash.field<a class="hash-link" href="#hoodiebucketindexhashfield-1" title="Direct link to heading"></a></h4><p>Index key. It is used to index the record and find its file group. If not set, use record key field as default<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BUCKET_INDEX_HASH_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexusemetadata">hoodie.bloom.index.use.metadata<a class="hash-link" href="#hoodiebloomindexusemetadata" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM.When true, the index lookup uses bloom filters and column stats from metadata table when available to speed up the process.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: BLOOM_INDEX_USE_METADATA</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexbucketizedchecking">hoodie.bloom.index.bucketized.checking<a class="hash-link" href="#hoodiebloomindexbucketizedchecking" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM. When true, bucketized bloom filtering is enabled. This reduces skew seen in sort based bloom index lookup<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: BLOOM_INDEX_BUCKETIZED_CHECKING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindextype">hoodie.index.type<a class="hash-link" href="#hoodieindextype" title="Direct link to heading"></a></h4><p>Type of index to use. Default is SIMPLE on Spark engine and INMEMORY on Flink and Java engines. Possible options are <!-- -->[BLOOM | GLOBAL_BLOOM |SIMPLE | GLOBAL_SIMPLE | INMEMORY | HBASE | BUCKET]<!-- -->. Bloom filters removes the dependency on a external system and is stored in the footer of the Parquet Data Files<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: INDEX_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexbloomfpp">hoodie.index.bloom.fpp<a class="hash-link" href="#hoodieindexbloomfpp" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM. Error rate allowed given the number of entries. This is used to calculate how many bits should be assigned for the bloom filter and the number of hash functions. This is usually set very low (default: 0.000000001), we like to tradeoff disk space for lower false positives. If the number of entries added to bloom filter exceeds the configured value (hoodie.index.bloom.num_entries), then this fpp may not be honored.<br>
<strong>Default Value</strong>: 0.000000001 (Optional)<br>
<code>Config Param: BLOOM_FILTER_FPP_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexupdatepartitionpath">hoodie.bloom.index.update.partition.path<a class="hash-link" href="#hoodiebloomindexupdatepartitionpath" title="Direct link to heading"></a></h4><p>Only applies if index type is GLOBAL_BLOOM. When set to true, an update including the partition path of a record that already exists will result in inserting the incoming record into the new partition and deleting the original record in the old partition. When set to false, the original record will only be updated in the old partition<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: BLOOM_INDEX_UPDATE_PARTITION_PATH_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexusecaching">hoodie.bloom.index.use.caching<a class="hash-link" href="#hoodiebloomindexusecaching" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM.When true, the input RDD will cached to speed up index lookup by reducing IO for computing parallelism or affected partitions<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: BLOOM_INDEX_USE_CACHING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexinputstoragelevel">hoodie.bloom.index.input.storage.level<a class="hash-link" href="#hoodiebloomindexinputstoragelevel" title="Direct link to heading"></a></h4><p>Only applies when #bloomIndexUseCaching is set. Determine what level of persistence is used to cache input RDDs. Refer to org.apache.spark.storage.StorageLevel for different values<br>
<strong>Default Value</strong>: MEMORY_AND_DISK_SER (Optional)<br>
<code>Config Param: BLOOM_INDEX_INPUT_STORAGE_LEVEL_VALUE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexusetreebasedfilter">hoodie.bloom.index.use.treebased.filter<a class="hash-link" href="#hoodiebloomindexusetreebasedfilter" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM. When true, interval tree based file pruning optimization is enabled. This mode speeds-up file-pruning based on key ranges when compared with the brute-force mode<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: BLOOM_INDEX_TREE_BASED_FILTER</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexparallelism">hoodie.bloom.index.parallelism<a class="hash-link" href="#hoodiebloomindexparallelism" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM. This is the amount of parallelism for index lookup, which involves a shuffle. By default, this is auto computed based on input workload characteristics.<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: BLOOM_INDEX_PARALLELISM</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexbucketengine">hoodie.index.bucket.engine<a class="hash-link" href="#hoodieindexbucketengine" title="Direct link to heading"></a></h4><p>Type of bucket index engine to use. Default is SIMPLE bucket index, with fixed number of bucket.Possible options are <!-- -->[SIMPLE | CONSISTENT_HASHING]<!-- -->.Consistent hashing supports dynamic resizing of the number of bucket, solving potential data skew and file size issues of the SIMPLE hashing engine.<br>
<strong>Default Value</strong>: SIMPLE (Optional)<br>
<code>Config Param: BUCKET_INDEX_ENGINE_TYPE</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexfilterdynamicmaxentries">hoodie.bloom.index.filter.dynamic.max.entries<a class="hash-link" href="#hoodiebloomindexfilterdynamicmaxentries" title="Direct link to heading"></a></h4><p>The threshold for the maximum number of keys to record in a dynamic Bloom filter row. Only applies if filter type is BloomFilterTypeCode.DYNAMIC_V0.<br>
<strong>Default Value</strong>: 100000 (Optional)<br>
<code>Config Param: BLOOM_INDEX_FILTER_DYNAMIC_MAX_ENTRIES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiesimpleindexusecaching">hoodie.simple.index.use.caching<a class="hash-link" href="#hoodiesimpleindexusecaching" title="Direct link to heading"></a></h4><p>Only applies if index type is SIMPLE. When true, the incoming writes will cached to speed up index lookup by reducing IO for computing parallelism or affected partitions<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: SIMPLE_INDEX_USE_CACHING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexprunebyranges">hoodie.bloom.index.prune.by.ranges<a class="hash-link" href="#hoodiebloomindexprunebyranges" title="Direct link to heading"></a></h4><p>Only applies if index type is BLOOM. When true, range information from files to leveraged speed up index lookups. Particularly helpful, if the key has a monotonously increasing prefix, such as timestamp. If the record key is completely random, it is better to turn this off, since range pruning will only add extra overhead to the index lookup.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: BLOOM_INDEX_PRUNE_BY_RANGES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebloomindexfiltertype">hoodie.bloom.index.filter.type<a class="hash-link" href="#hoodiebloomindexfiltertype" title="Direct link to heading"></a></h4><p>Filter type used. Default is BloomFilterTypeCode.DYNAMIC_V0. Available values are <!-- -->[BloomFilterTypeCode.SIMPLE , BloomFilterTypeCode.DYNAMIC_V0]<!-- -->. Dynamic bloom filters auto size themselves based on number of keys.<br>
<strong>Default Value</strong>: DYNAMIC_V0 (Optional)<br>
<code>Config Param: BLOOM_FILTER_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieindexclass">hoodie.index.class<a class="hash-link" href="#hoodieindexclass" title="Direct link to heading"></a></h4><p>Full path of user-defined index class and must be a subclass of HoodieIndex class. It will take precedence over the hoodie.index.type configuration if specified<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: INDEX_CLASS_NAME</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Clustering-Configs">Clustering Configs<a class="hash-link" href="#Clustering-Configs" title="Direct link to heading"></a></h3><p>Configurations that control the clustering table service in hudi, which optimizes the storage layout for better query performance by sorting and sizing data files.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieClusteringConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategyclusterendpartition">hoodie.clustering.plan.strategy.cluster.end.partition<a class="hash-link" href="#hoodieclusteringplanstrategyclusterendpartition" title="Direct link to heading"></a></h4><p>End partition used to filter partition (inclusive), only effective when the filter mode &#x27;hoodie.clustering.plan.partition.filter.mode&#x27; is SELECTED_PARTITIONS<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION_FILTER_END_PARTITION</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringrollbackpendingreplacecommitonconflict">hoodie.clustering.rollback.pending.replacecommit.on.conflict<a class="hash-link" href="#hoodieclusteringrollbackpendingreplacecommitonconflict" title="Direct link to heading"></a></h4><p>If updates are allowed to file groups pending clustering, then set this config to rollback failed or pending clustering instants. Pending clustering will be rolled back ONLY IF there is conflict between incoming upsert and filegroup to be clustered. Please exercise caution while setting this config, especially when clustering is done very frequently. This could lead to race condition in rare scenarios, for example, when the clustering completes after instants are fetched but before rollback completed.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ROLLBACK_PENDING_CLUSTERING_ON_CONFLICT</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringasyncmaxcommits">hoodie.clustering.async.max.commits<a class="hash-link" href="#hoodieclusteringasyncmaxcommits" title="Direct link to heading"></a></h4><p>Config to control frequency of async clustering<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: ASYNC_CLUSTERING_MAX_COMMITS</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringinlinemaxcommits">hoodie.clustering.inline.max.commits<a class="hash-link" href="#hoodieclusteringinlinemaxcommits" title="Direct link to heading"></a></h4><p>Config to control frequency of clustering planning<br>
<strong>Default Value</strong>: 4 (Optional)<br>
<code>Config Param: INLINE_CLUSTERING_MAX_COMMITS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielayoutoptimizeenable">hoodie.layout.optimize.enable<a class="hash-link" href="#hoodielayoutoptimizeenable" title="Direct link to heading"></a></h4><p>This setting has no effect. Please refer to clustering configuration, as well as LAYOUT_OPTIMIZE_STRATEGY config to enable advanced record layout optimization strategies<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: LAYOUT_OPTIMIZE_ENABLE</code><br>
<code>Since Version: 0.10.0</code><br>
<code>Deprecated Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategytargetfilemaxbytes">hoodie.clustering.plan.strategy.target.file.max.bytes<a class="hash-link" href="#hoodieclusteringplanstrategytargetfilemaxbytes" title="Direct link to heading"></a></h4><p>Each group can produce &#x27;N&#x27; (CLUSTERING_MAX_GROUP_SIZE/CLUSTERING_TARGET_FILE_SIZE) output file groups<br>
<strong>Default Value</strong>: 1073741824 (Optional)<br>
<code>Config Param: PLAN_STRATEGY_TARGET_FILE_MAX_BYTES</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategydaybasedskipfromlatestpartitions">hoodie.clustering.plan.strategy.daybased.skipfromlatest.partitions<a class="hash-link" href="#hoodieclusteringplanstrategydaybasedskipfromlatestpartitions" title="Direct link to heading"></a></h4><p>Number of partitions to skip from latest when choosing partitions to create ClusteringPlan<br>
<strong>Default Value</strong>: 0 (Optional)<br>
<code>Config Param: PLAN_STRATEGY_SKIP_PARTITIONS_FROM_LATEST</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringexecutionstrategyclass">hoodie.clustering.execution.strategy.class<a class="hash-link" href="#hoodieclusteringexecutionstrategyclass" title="Direct link to heading"></a></h4><p>Config to provide a strategy class (subclass of RunClusteringStrategy) to define how the clustering plan is executed. By default, we sort the file groups in th plan by the specified columns, while meeting the configured target file sizes.<br>
<strong>Default Value</strong>: org.apache.hudi.client.clustering.run.strategy.SparkSortAndSizeExecutionStrategy (Optional)<br>
<code>Config Param: EXECUTION_STRATEGY_CLASS_NAME</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringasyncenabled-1">hoodie.clustering.async.enabled<a class="hash-link" href="#hoodieclusteringasyncenabled-1" title="Direct link to heading"></a></h4><p>Enable running of clustering service, asynchronously as inserts happen on the table.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: ASYNC_CLUSTERING_ENABLE</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategyclass">hoodie.clustering.plan.strategy.class<a class="hash-link" href="#hoodieclusteringplanstrategyclass" title="Direct link to heading"></a></h4><p>Config to provide a strategy class (subclass of ClusteringPlanStrategy) to create clustering plan i.e select what file groups are being clustered. Default strategy, looks at the clustering small file size limit (determined by hoodie.clustering.plan.strategy.small.file.limit) to pick the small file slices within partitions for clustering.<br>
<strong>Default Value</strong>: org.apache.hudi.client.clustering.plan.strategy.SparkSizeBasedClusteringPlanStrategy (Optional)<br>
<code>Config Param: PLAN_STRATEGY_CLASS_NAME</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielayoutoptimizebuildcurvesamplesize">hoodie.layout.optimize.build.curve.sample.size<a class="hash-link" href="#hoodielayoutoptimizebuildcurvesamplesize" title="Direct link to heading"></a></h4><p>Determines target sample size used by the Boundary-based Interleaved Index method of building space-filling curve. Larger sample size entails better layout optimization outcomes, at the expense of higher memory footprint.<br>
<strong>Default Value</strong>: 200000 (Optional)<br>
<code>Config Param: LAYOUT_OPTIMIZE_BUILD_CURVE_SAMPLE_SIZE</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategypartitionselected">hoodie.clustering.plan.strategy.partition.selected<a class="hash-link" href="#hoodieclusteringplanstrategypartitionselected" title="Direct link to heading"></a></h4><p>Partitions to run clustering<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION_SELECTED</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringupdatesstrategy">hoodie.clustering.updates.strategy<a class="hash-link" href="#hoodieclusteringupdatesstrategy" title="Direct link to heading"></a></h4><p>Determines how to handle updates, deletes to file groups that are under clustering. Default strategy just rejects the update<br>
<strong>Default Value</strong>: org.apache.hudi.client.clustering.update.strategy.SparkRejectUpdateStrategy (Optional)<br>
<code>Config Param: UPDATES_STRATEGY</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielayoutoptimizestrategy">hoodie.layout.optimize.strategy<a class="hash-link" href="#hoodielayoutoptimizestrategy" title="Direct link to heading"></a></h4><p>Determines ordering strategy used in records layout optimization. Currently supported strategies are &quot;linear&quot;, &quot;z-order&quot; and &quot;hilbert&quot; values are supported.<br>
<strong>Default Value</strong>: linear (Optional)<br>
<code>Config Param: LAYOUT_OPTIMIZE_STRATEGY</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringinline-1">hoodie.clustering.inline<a class="hash-link" href="#hoodieclusteringinline-1" title="Direct link to heading"></a></h4><p>Turn on inline clustering - clustering will be run after each write operation is complete<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: INLINE_CLUSTERING</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategyclusterbeginpartition">hoodie.clustering.plan.strategy.cluster.begin.partition<a class="hash-link" href="#hoodieclusteringplanstrategyclusterbeginpartition" title="Direct link to heading"></a></h4><p>Begin partition used to filter partition (inclusive), only effective when the filter mode &#x27;hoodie.clustering.plan.partition.filter.mode&#x27; is SELECTED_PARTITIONS<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION_FILTER_BEGIN_PARTITION</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategysortcolumns">hoodie.clustering.plan.strategy.sort.columns<a class="hash-link" href="#hoodieclusteringplanstrategysortcolumns" title="Direct link to heading"></a></h4><p>Columns to sort the data by when clustering<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PLAN_STRATEGY_SORT_COLUMNS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringpreservecommitmetadata">hoodie.clustering.preserve.commit.metadata<a class="hash-link" href="#hoodieclusteringpreservecommitmetadata" title="Direct link to heading"></a></h4><p>When rewriting data, preserves existing hoodie_commit_time<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PRESERVE_COMMIT_METADATA</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategymaxnumgroups">hoodie.clustering.plan.strategy.max.num.groups<a class="hash-link" href="#hoodieclusteringplanstrategymaxnumgroups" title="Direct link to heading"></a></h4><p>Maximum number of groups to create as part of ClusteringPlan. Increasing groups will increase parallelism<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: PLAN_STRATEGY_MAX_GROUPS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanpartitionfiltermode">hoodie.clustering.plan.partition.filter.mode<a class="hash-link" href="#hoodieclusteringplanpartitionfiltermode" title="Direct link to heading"></a></h4><p>Partition filter mode used in the creation of clustering plan. Available values are - NONE: do not filter table partition and thus the clustering plan will include all partitions that have clustering candidate.RECENT_DAYS: keep a continuous range of partitions, worked together with configs &#x27;hoodie.clustering.plan.strategy.daybased.lookback.partitions&#x27; and &#x27;hoodie.clustering.plan.strategy.daybased.skipfromlatest.partitions.SELECTED_PARTITIONS: keep partitions that are in the specified range <!-- -->[&#x27;hoodie.clustering.plan.strategy.cluster.begin.partition&#x27;, &#x27;hoodie.clustering.plan.strategy.cluster.end.partition&#x27;]<!-- -->.<br>
<strong>Default Value</strong>: NONE (Optional)<br>
<code>Config Param: PLAN_PARTITION_FILTER_MODE_NAME</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringscheduleinline">hoodie.clustering.schedule.inline<a class="hash-link" href="#hoodieclusteringscheduleinline" title="Direct link to heading"></a></h4><p>When set to true, clustering service will be attempted for inline scheduling after each write. Users have to ensure they have a separate job to run async clustering(execution) for the one scheduled by this writer. Users can choose to set both <code>hoodie.clustering.inline</code> and <code>hoodie.clustering.schedule.inline</code> to false and have both scheduling and execution triggered by any async process, on which case <code>hoodie.clustering.async.enabled</code> is expected to be set to true. But if <code>hoodie.clustering.inline</code> is set to false, and <code>hoodie.clustering.schedule.inline</code> is set to true, regular writers will schedule clustering inline, but users are expected to trigger async job for execution. If <code>hoodie.clustering.inline</code> is set to true, regular writers will do both scheduling and execution inline for clustering<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: SCHEDULE_INLINE_CLUSTERING</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielayoutoptimizedataskippingenable">hoodie.layout.optimize.data.skipping.enable<a class="hash-link" href="#hoodielayoutoptimizedataskippingenable" title="Direct link to heading"></a></h4><p>Enable data skipping by collecting statistics once layout optimization is complete.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: LAYOUT_OPTIMIZE_DATA_SKIPPING_ENABLE</code><br>
<code>Since Version: 0.10.0</code><br>
<code>Deprecated Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategymaxbytespergroup">hoodie.clustering.plan.strategy.max.bytes.per.group<a class="hash-link" href="#hoodieclusteringplanstrategymaxbytespergroup" title="Direct link to heading"></a></h4><p>Each clustering operation can create multiple output file groups. Total amount of data processed by clustering operation is defined by below two properties (CLUSTERING_MAX_BYTES_PER_GROUP * CLUSTERING_MAX_NUM_GROUPS). Max amount of data to be included in one group<br>
<strong>Default Value</strong>: 2147483648 (Optional)<br>
<code>Config Param: PLAN_STRATEGY_MAX_BYTES_PER_OUTPUT_FILEGROUP</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategysmallfilelimit">hoodie.clustering.plan.strategy.small.file.limit<a class="hash-link" href="#hoodieclusteringplanstrategysmallfilelimit" title="Direct link to heading"></a></h4><p>Files smaller than the size in bytes specified here are candidates for clustering<br>
<strong>Default Value</strong>: 314572800 (Optional)<br>
<code>Config Param: PLAN_STRATEGY_SMALL_FILE_LIMIT</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodielayoutoptimizecurvebuildmethod">hoodie.layout.optimize.curve.build.method<a class="hash-link" href="#hoodielayoutoptimizecurvebuildmethod" title="Direct link to heading"></a></h4><p>Controls how data is sampled to build the space-filling curves. Two methods: &quot;direct&quot;, &quot;sample&quot;. The direct method is faster than the sampling, however sample method would produce a better data layout.<br>
<strong>Default Value</strong>: direct (Optional)<br>
<code>Config Param: LAYOUT_OPTIMIZE_SPATIAL_CURVE_BUILD_METHOD</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategypartitionregexpattern">hoodie.clustering.plan.strategy.partition.regex.pattern<a class="hash-link" href="#hoodieclusteringplanstrategypartitionregexpattern" title="Direct link to heading"></a></h4><p>Filter clustering partitions that matched regex pattern<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: PARTITION_REGEX_PATTERN</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieclusteringplanstrategydaybasedlookbackpartitions">hoodie.clustering.plan.strategy.daybased.lookback.partitions<a class="hash-link" href="#hoodieclusteringplanstrategydaybasedlookbackpartitions" title="Direct link to heading"></a></h4><p>Number of partitions to list to create ClusteringPlan<br>
<strong>Default Value</strong>: 2 (Optional)<br>
<code>Config Param: DAYBASED_LOOKBACK_PARTITIONS</code><br>
<code>Since Version: 0.7.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Common-Configurations">Common Configurations<a class="hash-link" href="#Common-Configurations" title="Direct link to heading"></a></h3><p>The following set of configurations are common across Hudi.</p><p><code>Config Class</code>: org.apache.hudi.common.config.HoodieCommonConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecommondiskmapcompressionenabled">hoodie.common.diskmap.compression.enabled<a class="hash-link" href="#hoodiecommondiskmapcompressionenabled" title="Direct link to heading"></a></h4><p>Turn on compression for BITCASK disk map used by the External Spillable Map<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: DISK_MAP_BITCASK_COMPRESSION_ENABLED</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiedatasourcewritereconcileschema-1">hoodie.datasource.write.reconcile.schema<a class="hash-link" href="#hoodiedatasourcewritereconcileschema-1" title="Direct link to heading"></a></h4><p>When a new batch of write has records with old schema, but latest table schema got evolved, this config will upgrade the records to leverage latest table schema(default values will be injected to missing fields). If not, the write batch would fail.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: RECONCILE_SCHEMA</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecommonspillablediskmaptype">hoodie.common.spillable.diskmap.type<a class="hash-link" href="#hoodiecommonspillablediskmaptype" title="Direct link to heading"></a></h4><p>When handling input data that cannot be held in memory, to merge with a file on storage, a spillable diskmap is employed. By default, we use a persistent hashmap based loosely on bitcask, that offers O(1) inserts, lookups. Change this to <code>ROCKS_DB</code> to prefer using rocksDB, for handling the spill.<br>
<strong>Default Value</strong>: BITCASK (Optional)<br>
<code>Config Param: SPILLABLE_DISK_MAP_TYPE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieschemaonreadenable-1">hoodie.schema.on.read.enable<a class="hash-link" href="#hoodieschemaonreadenable-1" title="Direct link to heading"></a></h4><p>Enables support for Schema Evolution feature<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: SCHEMA_EVOLUTION_ENABLE</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Bootstrap-Configs">Bootstrap Configs<a class="hash-link" href="#Bootstrap-Configs" title="Direct link to heading"></a></h3><p>Configurations that control how you want to bootstrap your existing tables for the first time into hudi. The bootstrap operation can flexibly avoid copying data over before you can use Hudi and support running the existing writers and new hudi writers in parallel, to validate the migration.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieBootstrapConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrappartitionpathtranslatorclass">hoodie.bootstrap.partitionpath.translator.class<a class="hash-link" href="#hoodiebootstrappartitionpathtranslatorclass" title="Direct link to heading"></a></h4><p>Translates the partition paths from the bootstrapped data into how is laid out as a Hudi table.<br>
<strong>Default Value</strong>: org.apache.hudi.client.bootstrap.translator.IdentityBootstrapPartitionPathTranslator (Optional)<br>
<code>Config Param: PARTITION_PATH_TRANSLATOR_CLASS_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapfullinputprovider">hoodie.bootstrap.full.input.provider<a class="hash-link" href="#hoodiebootstrapfullinputprovider" title="Direct link to heading"></a></h4><p>Class to use for reading the bootstrap dataset partitions/files, for Bootstrap mode FULL_RECORD<br>
<strong>Default Value</strong>: org.apache.hudi.bootstrap.SparkParquetBootstrapDataProvider (Optional)<br>
<code>Config Param: FULL_BOOTSTRAP_INPUT_PROVIDER_CLASS_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapkeygentype">hoodie.bootstrap.keygen.type<a class="hash-link" href="#hoodiebootstrapkeygentype" title="Direct link to heading"></a></h4><p>Type of build-in key generator, currently support SIMPLE, COMPLEX, TIMESTAMP, CUSTOM, NON_PARTITION, GLOBAL_DELETE<br>
<strong>Default Value</strong>: SIMPLE (Optional)<br>
<code>Config Param: KEYGEN_TYPE</code><br>
<code>Since Version: 0.9.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapkeygenclass">hoodie.bootstrap.keygen.class<a class="hash-link" href="#hoodiebootstrapkeygenclass" title="Direct link to heading"></a></h4><p>Key generator implementation to be used for generating keys from the bootstrapped dataset<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: KEYGEN_CLASS_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapparallelism">hoodie.bootstrap.parallelism<a class="hash-link" href="#hoodiebootstrapparallelism" title="Direct link to heading"></a></h4><p>Parallelism value to be used to bootstrap data into hudi<br>
<strong>Default Value</strong>: 1500 (Optional)<br>
<code>Config Param: PARALLELISM_VALUE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapbasepath-1">hoodie.bootstrap.base.path<a class="hash-link" href="#hoodiebootstrapbasepath-1" title="Direct link to heading"></a></h4><p>Base path of the dataset that needs to be bootstrapped as a Hudi table<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: BASE_PATH</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapmodeselectorregex">hoodie.bootstrap.mode.selector.regex<a class="hash-link" href="#hoodiebootstrapmodeselectorregex" title="Direct link to heading"></a></h4><p>Matches each bootstrap dataset partition against this regex and applies the mode below to it.<br>
<strong>Default Value</strong>: .* (Optional)<br>
<code>Config Param: PARTITION_SELECTOR_REGEX_PATTERN</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapindexclass-1">hoodie.bootstrap.index.class<a class="hash-link" href="#hoodiebootstrapindexclass-1" title="Direct link to heading"></a></h4><p>Implementation to use, for mapping a skeleton base file to a boostrap base file.<br>
<strong>Default Value</strong>: org.apache.hudi.common.bootstrap.index.HFileBootstrapIndex (Optional)<br>
<code>Config Param: INDEX_CLASS_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapmodeselectorregexmode">hoodie.bootstrap.mode.selector.regex.mode<a class="hash-link" href="#hoodiebootstrapmodeselectorregexmode" title="Direct link to heading"></a></h4><p>Bootstrap mode to apply for partition paths, that match regex above. METADATA_ONLY will generate just skeleton base files with keys/footers, avoiding full cost of rewriting the dataset. FULL_RECORD will perform a full copy/rewrite of the data as a Hudi table.<br>
<strong>Default Value</strong>: METADATA_ONLY (Optional)<br>
<code>Config Param: PARTITION_SELECTOR_REGEX_MODE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiebootstrapmodeselector">hoodie.bootstrap.mode.selector<a class="hash-link" href="#hoodiebootstrapmodeselector" title="Direct link to heading"></a></h4><p>Selects the mode in which each file/partition in the bootstrapped dataset gets bootstrapped<br>
<strong>Default Value</strong>: org.apache.hudi.client.bootstrap.selector.MetadataOnlyBootstrapModeSelector (Optional)<br>
<code>Config Param: MODE_SELECTOR_CLASS_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_y2LR" id="METRICS">Metrics Configs<a class="hash-link" href="#METRICS" title="Direct link to heading"></a></h2><p>These set of configs are used to enable monitoring and reporting of keyHudi stats and metrics.</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metrics-Configurations-for-Datadog-reporter">Metrics Configurations for Datadog reporter<a class="hash-link" href="#Metrics-Configurations-for-Datadog-reporter" title="Direct link to heading"></a></h3><p>Enables reporting on Hudi metrics using the Datadog reporter type. Hudi publishes metrics on every commit, clean, rollback etc.</p><p><code>Config Class</code>: org.apache.hudi.config.metrics.HoodieMetricsDatadogConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogapitimeoutseconds">hoodie.metrics.datadog.api.timeout.seconds<a class="hash-link" href="#hoodiemetricsdatadogapitimeoutseconds" title="Direct link to heading"></a></h4><p>Datadog API timeout in seconds. Default to 3.<br>
<strong>Default Value</strong>: 3 (Optional)<br>
<code>Config Param: API_TIMEOUT_IN_SECONDS</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogmetricprefix">hoodie.metrics.datadog.metric.prefix<a class="hash-link" href="#hoodiemetricsdatadogmetricprefix" title="Direct link to heading"></a></h4><p>Datadog metric prefix to be prepended to each metric name with a dot as delimiter. For example, if it is set to foo, foo. will be prepended.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: METRIC_PREFIX_VALUE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogapisite">hoodie.metrics.datadog.api.site<a class="hash-link" href="#hoodiemetricsdatadogapisite" title="Direct link to heading"></a></h4><p>Datadog API site: EU or US<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: API_SITE_VALUE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogapikeyskipvalidation">hoodie.metrics.datadog.api.key.skip.validation<a class="hash-link" href="#hoodiemetricsdatadogapikeyskipvalidation" title="Direct link to heading"></a></h4><p>Before sending metrics via Datadog API, whether to skip validating Datadog API key or not. Default to false.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: API_KEY_SKIP_VALIDATION</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogmetrichost">hoodie.metrics.datadog.metric.host<a class="hash-link" href="#hoodiemetricsdatadogmetrichost" title="Direct link to heading"></a></h4><p>Datadog metric host to be sent along with metrics data.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: METRIC_HOST_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogreportperiodseconds">hoodie.metrics.datadog.report.period.seconds<a class="hash-link" href="#hoodiemetricsdatadogreportperiodseconds" title="Direct link to heading"></a></h4><p>Datadog reporting period in seconds. Default to 30.<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: REPORT_PERIOD_IN_SECONDS</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogapikey">hoodie.metrics.datadog.api.key<a class="hash-link" href="#hoodiemetricsdatadogapikey" title="Direct link to heading"></a></h4><p>Datadog API key<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: API_KEY</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogapikeysupplier">hoodie.metrics.datadog.api.key.supplier<a class="hash-link" href="#hoodiemetricsdatadogapikeysupplier" title="Direct link to heading"></a></h4><p>Datadog API key supplier to supply the API key at runtime. This will take effect if hoodie.metrics.datadog.api.key is not set.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: API_KEY_SUPPLIER</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsdatadogmetrictags">hoodie.metrics.datadog.metric.tags<a class="hash-link" href="#hoodiemetricsdatadogmetrictags" title="Direct link to heading"></a></h4><p>Datadog metric tags (comma-delimited) to be sent along with metrics data.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: METRIC_TAG_VALUES</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metrics-Configurations-for-Amazon-CloudWatch">Metrics Configurations for Amazon CloudWatch<a class="hash-link" href="#Metrics-Configurations-for-Amazon-CloudWatch" title="Direct link to heading"></a></h3><p>Enables reporting on Hudi metrics using Amazon CloudWatch. Hudi publishes metrics on every commit, clean, rollback etc.</p><p><code>Config Class</code>: org.apache.hudi.config.metrics.HoodieMetricsCloudWatchConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricscloudwatchreportperiodseconds">hoodie.metrics.cloudwatch.report.period.seconds<a class="hash-link" href="#hoodiemetricscloudwatchreportperiodseconds" title="Direct link to heading"></a></h4><p>Reporting interval in seconds<br>
<strong>Default Value</strong>: 60 (Optional)<br>
<code>Config Param: REPORT_PERIOD_SECONDS</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricscloudwatchnamespace">hoodie.metrics.cloudwatch.namespace<a class="hash-link" href="#hoodiemetricscloudwatchnamespace" title="Direct link to heading"></a></h4><p>Namespace of reporter<br>
<strong>Default Value</strong>: Hudi (Optional)<br>
<code>Config Param: METRIC_NAMESPACE</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricscloudwatchmetricprefix">hoodie.metrics.cloudwatch.metric.prefix<a class="hash-link" href="#hoodiemetricscloudwatchmetricprefix" title="Direct link to heading"></a></h4><p>Metric prefix of reporter<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: METRIC_PREFIX</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricscloudwatchmaxdatumsperrequest">hoodie.metrics.cloudwatch.maxDatumsPerRequest<a class="hash-link" href="#hoodiemetricscloudwatchmaxdatumsperrequest" title="Direct link to heading"></a></h4><p>Max number of Datums per request<br>
<strong>Default Value</strong>: 20 (Optional)<br>
<code>Config Param: MAX_DATUMS_PER_REQUEST</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metrics-Configurations">Metrics Configurations<a class="hash-link" href="#Metrics-Configurations" title="Direct link to heading"></a></h3><p>Enables reporting on Hudi metrics. Hudi publishes metrics on every commit, clean, rollback etc. The following sections list the supported reporters.</p><p><code>Config Class</code>: org.apache.hudi.config.metrics.HoodieMetricsConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsexecutorenable">hoodie.metrics.executor.enable<a class="hash-link" href="#hoodiemetricsexecutorenable" title="Direct link to heading"></a></h4><br>**Default Value**: N/A (Required)<br>`Config Param: EXECUTOR_METRICS_ENABLE`<br>`Since Version: 0.7.0`<br></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsreportermetricsnameprefix">hoodie.metrics.reporter.metricsname.prefix<a class="hash-link" href="#hoodiemetricsreportermetricsnameprefix" title="Direct link to heading"></a></h4><p>The prefix given to the metrics names.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: METRICS_REPORTER_PREFIX</code><br>
<code>Since Version: 0.11.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsreportertype">hoodie.metrics.reporter.type<a class="hash-link" href="#hoodiemetricsreportertype" title="Direct link to heading"></a></h4><p>Type of metrics reporter.<br>
<strong>Default Value</strong>: GRAPHITE (Optional)<br>
<code>Config Param: METRICS_REPORTER_TYPE_VALUE</code><br>
<code>Since Version: 0.5.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsreporterclass">hoodie.metrics.reporter.class<a class="hash-link" href="#hoodiemetricsreporterclass" title="Direct link to heading"></a></h4><br>**Default Value**: (Optional)<br>`Config Param: METRICS_REPORTER_CLASS_NAME`<br>`Since Version: 0.6.0`<br></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricson">hoodie.metrics.on<a class="hash-link" href="#hoodiemetricson" title="Direct link to heading"></a></h4><p>Turn on/off metrics reporting. off by default.<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: TURN_METRICS_ON</code><br>
<code>Since Version: 0.5.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metrics-Configurations-for-Jmx">Metrics Configurations for Jmx<a class="hash-link" href="#Metrics-Configurations-for-Jmx" title="Direct link to heading"></a></h3><p>Enables reporting on Hudi metrics using Jmx. Hudi publishes metrics on every commit, clean, rollback etc.</p><p><code>Config Class</code>: org.apache.hudi.config.metrics.HoodieMetricsJmxConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsjmxhost">hoodie.metrics.jmx.host<a class="hash-link" href="#hoodiemetricsjmxhost" title="Direct link to heading"></a></h4><p>Jmx host to connect to<br>
<strong>Default Value</strong>: localhost (Optional)<br>
<code>Config Param: JMX_HOST_NAME</code><br>
<code>Since Version: 0.5.1</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsjmxport">hoodie.metrics.jmx.port<a class="hash-link" href="#hoodiemetricsjmxport" title="Direct link to heading"></a></h4><p>Jmx port to connect to<br>
<strong>Default Value</strong>: 9889 (Optional)<br>
<code>Config Param: JMX_PORT_NUM</code><br>
<code>Since Version: 0.5.1</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metrics-Configurations-for-Prometheus">Metrics Configurations for Prometheus<a class="hash-link" href="#Metrics-Configurations-for-Prometheus" title="Direct link to heading"></a></h3><p>Enables reporting on Hudi metrics using Prometheus. Hudi publishes metrics on every commit, clean, rollback etc.</p><p><code>Config Class</code>: org.apache.hudi.config.metrics.HoodieMetricsPrometheusConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricspushgatewayrandomjobnamesuffix">hoodie.metrics.pushgateway.random.job.name.suffix<a class="hash-link" href="#hoodiemetricspushgatewayrandomjobnamesuffix" title="Direct link to heading"></a></h4><p>Whether the pushgateway name need a random suffix , default true.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PUSHGATEWAY_RANDOM_JOBNAME_SUFFIX</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricspushgatewayport">hoodie.metrics.pushgateway.port<a class="hash-link" href="#hoodiemetricspushgatewayport" title="Direct link to heading"></a></h4><p>Port for the push gateway.<br>
<strong>Default Value</strong>: 9091 (Optional)<br>
<code>Config Param: PUSHGATEWAY_PORT_NUM</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricspushgatewaydeleteonshutdown">hoodie.metrics.pushgateway.delete.on.shutdown<a class="hash-link" href="#hoodiemetricspushgatewaydeleteonshutdown" title="Direct link to heading"></a></h4><p>Delete the pushgateway info or not when job shutdown, true by default.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: PUSHGATEWAY_DELETE_ON_SHUTDOWN_ENABLE</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsprometheusport">hoodie.metrics.prometheus.port<a class="hash-link" href="#hoodiemetricsprometheusport" title="Direct link to heading"></a></h4><p>Port for prometheus server.<br>
<strong>Default Value</strong>: 9090 (Optional)<br>
<code>Config Param: PROMETHEUS_PORT_NUM</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricspushgatewayjobname">hoodie.metrics.pushgateway.job.name<a class="hash-link" href="#hoodiemetricspushgatewayjobname" title="Direct link to heading"></a></h4><p>Name of the push gateway job.<br>
<strong>Default Value</strong>: (Optional)<br>
<code>Config Param: PUSHGATEWAY_JOBNAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricspushgatewayreportperiodseconds">hoodie.metrics.pushgateway.report.period.seconds<a class="hash-link" href="#hoodiemetricspushgatewayreportperiodseconds" title="Direct link to heading"></a></h4><p>Reporting interval in seconds.<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: PUSHGATEWAY_REPORT_PERIOD_IN_SECONDS</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricspushgatewayhost">hoodie.metrics.pushgateway.host<a class="hash-link" href="#hoodiemetricspushgatewayhost" title="Direct link to heading"></a></h4><p>Hostname of the prometheus push gateway.<br>
<strong>Default Value</strong>: localhost (Optional)<br>
<code>Config Param: PUSHGATEWAY_HOST_NAME</code><br>
<code>Since Version: 0.6.0</code><br></p></blockquote><hr><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Metrics-Configurations-for-Graphite">Metrics Configurations for Graphite<a class="hash-link" href="#Metrics-Configurations-for-Graphite" title="Direct link to heading"></a></h3><p>Enables reporting on Hudi metrics using Graphite. Hudi publishes metrics on every commit, clean, rollback etc.</p><p><code>Config Class</code>: org.apache.hudi.config.metrics.HoodieMetricsGraphiteConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsgraphiteport">hoodie.metrics.graphite.port<a class="hash-link" href="#hoodiemetricsgraphiteport" title="Direct link to heading"></a></h4><p>Graphite port to connect to.<br>
<strong>Default Value</strong>: 4756 (Optional)<br>
<code>Config Param: GRAPHITE_SERVER_PORT_NUM</code><br>
<code>Since Version: 0.5.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsgraphitereportperiodseconds">hoodie.metrics.graphite.report.period.seconds<a class="hash-link" href="#hoodiemetricsgraphitereportperiodseconds" title="Direct link to heading"></a></h4><p>Graphite reporting period in seconds. Default to 30.<br>
<strong>Default Value</strong>: 30 (Optional)<br>
<code>Config Param: GRAPHITE_REPORT_PERIOD_IN_SECONDS</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsgraphitehost">hoodie.metrics.graphite.host<a class="hash-link" href="#hoodiemetricsgraphitehost" title="Direct link to heading"></a></h4><p>Graphite host to connect to.<br>
<strong>Default Value</strong>: localhost (Optional)<br>
<code>Config Param: GRAPHITE_SERVER_HOST_NAME</code><br>
<code>Since Version: 0.5.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetricsgraphitemetricprefix">hoodie.metrics.graphite.metric.prefix<a class="hash-link" href="#hoodiemetricsgraphitemetricprefix" title="Direct link to heading"></a></h4><p>Standard prefix applied to all metrics. This helps to add datacenter, environment information for e.g<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: GRAPHITE_METRIC_PREFIX_VALUE</code><br>
<code>Since Version: 0.5.1</code><br></p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_y2LR" id="RECORD_PAYLOAD">Record Payload Config<a class="hash-link" href="#RECORD_PAYLOAD" title="Direct link to heading"></a></h2><p>This is the lowest level of customization offered by Hudi. Record payloads define how to produce new values to upsert based on incoming new record and stored old record. Hudi provides default implementations such as OverwriteWithLatestAvroPayload which simply update table with the latest/last-written record. This can be overridden to a custom class extending HoodieRecordPayload class, on both datasource and WriteClient levels.</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Payload-Configurations">Payload Configurations<a class="hash-link" href="#Payload-Configurations" title="Direct link to heading"></a></h3><p>Payload related configs, that can be leveraged to control merges based on specific business fields in the data.</p><p><code>Config Class</code>: org.apache.hudi.config.HoodiePayloadConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiecompactionpayloadclass-1">hoodie.compaction.payload.class<a class="hash-link" href="#hoodiecompactionpayloadclass-1" title="Direct link to heading"></a></h4><p>This needs to be same as class used during insert/upserts. Just like writing, compaction also uses the record payload class to merge records in the log against each other, merge again with the base file and produce the final record to be written after compaction.<br>
<strong>Default Value</strong>: org.apache.hudi.common.model.OverwriteWithLatestAvroPayload (Optional)<br>
<code>Config Param: PAYLOAD_CLASS_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiepayloadeventtimefield">hoodie.payload.event.time.field<a class="hash-link" href="#hoodiepayloadeventtimefield" title="Direct link to heading"></a></h4><p>Table column/field name to derive timestamp associated with the records. This canbe useful for e.g, determining the freshness of the table.<br>
<strong>Default Value</strong>: ts (Optional)<br>
<code>Config Param: EVENT_TIME_FIELD</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiepayloadorderingfield">hoodie.payload.ordering.field<a class="hash-link" href="#hoodiepayloadorderingfield" title="Direct link to heading"></a></h4><p>Table column/field name to order records that have the same key, before merging and writing to storage.<br>
<strong>Default Value</strong>: ts (Optional)<br>
<code>Config Param: ORDERING_FIELD</code><br></p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_y2LR" id="KAFKA_CONNECT">Kafka Connect Configs<a class="hash-link" href="#KAFKA_CONNECT" title="Direct link to heading"></a></h2><p>These set of configs are used for Kafka Connect Sink Connector for writing Hudi Tables</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Kafka-Sink-Connect-Configurations">Kafka Sink Connect Configurations<a class="hash-link" href="#Kafka-Sink-Connect-Configurations" title="Direct link to heading"></a></h3><p>Configurations for Kafka Connect Sink Connector for Hudi.</p><p><code>Config Class</code>: org.apache.hudi.connect.writers.KafkaConnectConfigs<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekafkacoordinatorwritetimeoutsecs">hoodie.kafka.coordinator.write.timeout.secs<a class="hash-link" href="#hoodiekafkacoordinatorwritetimeoutsecs" title="Direct link to heading"></a></h4><p>The timeout after sending an END_COMMIT until when the coordinator will wait for the write statuses from all the partitionsto ignore the current commit and start a new commit.<br>
<strong>Default Value</strong>: 300 (Optional)<br>
<code>Config Param: COORDINATOR_WRITE_TIMEOUT_SECS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetasyncclasses">hoodie.meta.sync.classes<a class="hash-link" href="#hoodiemetasyncclasses" title="Direct link to heading"></a></h4><p>Meta sync client tool, using comma to separate multi tools<br>
<strong>Default Value</strong>: org.apache.hudi.hive.HiveSyncTool (Optional)<br>
<code>Config Param: META_SYNC_CLASSES</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekafkaallowcommitonerrors">hoodie.kafka.allow.commit.on.errors<a class="hash-link" href="#hoodiekafkaallowcommitonerrors" title="Direct link to heading"></a></h4><p>Commit even when some records failed to be written<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ALLOW_COMMIT_ON_ERRORS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hadoophome">hadoop.home<a class="hash-link" href="#hadoophome" title="Direct link to heading"></a></h4><p>The Hadoop home directory.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HADOOP_HOME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiemetasyncenable">hoodie.meta.sync.enable<a class="hash-link" href="#hoodiemetasyncenable" title="Direct link to heading"></a></h4><p>Enable Meta Sync such as Hive<br>
<strong>Default Value</strong>: false (Optional)<br>
<code>Config Param: META_SYNC_ENABLE</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekafkacommitintervalsecs">hoodie.kafka.commit.interval.secs<a class="hash-link" href="#hoodiekafkacommitintervalsecs" title="Direct link to heading"></a></h4><p>The interval at which Hudi will commit the records written to the files, making them consumable on the read-side.<br>
<strong>Default Value</strong>: 60 (Optional)<br>
<code>Config Param: COMMIT_INTERVAL_SECS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekafkacontroltopic">hoodie.kafka.control.topic<a class="hash-link" href="#hoodiekafkacontroltopic" title="Direct link to heading"></a></h4><p>Kafka topic name used by the Hudi Sink Connector for sending and receiving control messages. Not used for data records.<br>
<strong>Default Value</strong>: hudi-control-topic (Optional)<br>
<code>Config Param: CONTROL_TOPIC_NAME</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="bootstrapservers">bootstrap.servers<a class="hash-link" href="#bootstrapservers" title="Direct link to heading"></a></h4><p>The bootstrap servers for the Kafka Cluster.<br>
<strong>Default Value</strong>: localhost:9092 (Optional)<br>
<code>Config Param: KAFKA_BOOTSTRAP_SERVERS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieschemaproviderclass">hoodie.schemaprovider.class<a class="hash-link" href="#hoodieschemaproviderclass" title="Direct link to heading"></a></h4><p>subclass of org.apache.hudi.schema.SchemaProvider to attach schemas to input &amp; target table data, built in options: org.apache.hudi.schema.FilebasedSchemaProvider.<br>
<strong>Default Value</strong>: org.apache.hudi.schema.FilebasedSchemaProvider (Optional)<br>
<code>Config Param: SCHEMA_PROVIDER_CLASS</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hadoopconfdir">hadoop.conf.dir<a class="hash-link" href="#hadoopconfdir" title="Direct link to heading"></a></h4><p>The Hadoop configuration directory.<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: HADOOP_CONF_DIR</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodiekafkacompactionasyncenable">hoodie.kafka.compaction.async.enable<a class="hash-link" href="#hoodiekafkacompactionasyncenable" title="Direct link to heading"></a></h4><p>Controls whether async compaction should be turned on for MOR table writing.<br>
<strong>Default Value</strong>: true (Optional)<br>
<code>Config Param: ASYNC_COMPACT_ENABLE</code><br></p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_y2LR" id="AWS">Amazon Web Services Configs<a class="hash-link" href="#AWS" title="Direct link to heading"></a></h2><p>Please fill in the description for Config Group Name: Amazon Web Services Configs</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="Amazon-Web-Services-Configs">Amazon Web Services Configs<a class="hash-link" href="#Amazon-Web-Services-Configs" title="Direct link to heading"></a></h3><p>Amazon Web Services configurations to access resources like Amazon DynamoDB (for locks), Amazon CloudWatch (metrics).</p><p><code>Config Class</code>: org.apache.hudi.config.HoodieAWSConfig<br></p><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieawssessiontoken">hoodie.aws.session.token<a class="hash-link" href="#hoodieawssessiontoken" title="Direct link to heading"></a></h4><p>AWS session token<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: AWS_SESSION_TOKEN</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieawsaccesskey">hoodie.aws.access.key<a class="hash-link" href="#hoodieawsaccesskey" title="Direct link to heading"></a></h4><p>AWS access key id<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: AWS_ACCESS_KEY</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr><blockquote><h4 class="anchor anchorWithStickyNavbar_y2LR" id="hoodieawssecretkey">hoodie.aws.secret.key<a class="hash-link" href="#hoodieawssecretkey" title="Direct link to heading"></a></h4><p>AWS secret key<br>
<strong>Default Value</strong>: N/A (Required)<br>
<code>Config Param: AWS_SECRET_KEY</code><br>
<code>Since Version: 0.10.0</code><br></p></blockquote><hr></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/hudi/tree/asf-site/website/versioned_docs/version-0.12.2/configurations.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_mS5F" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_mt2f"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/0.12.2/basic_configurations"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Basic Configurations</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/0.12.2/query_engine_setup"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Query Engine Setup</div></a></div></nav></div></div><div class="col col--3"><div class="tableOfContents_vrFS thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#externalized-config-file" class="table-of-contents__link toc-highlight">Externalized Config File</a></li><li><a href="#SPARK_DATASOURCE" class="table-of-contents__link toc-highlight">Spark Datasource Configs</a><ul><li><a href="#Read-Options" class="table-of-contents__link toc-highlight">Read Options</a></li><li><a href="#Write-Options" class="table-of-contents__link toc-highlight">Write Options</a></li><li><a href="#PreCommit-Validator-Configurations" class="table-of-contents__link toc-highlight">PreCommit Validator Configurations</a></li></ul></li><li><a href="#FLINK_SQL" class="table-of-contents__link toc-highlight">Flink Sql Configs</a><ul><li><a href="#Flink-Options" class="table-of-contents__link toc-highlight">Flink Options</a></li></ul></li><li><a href="#WRITE_CLIENT" class="table-of-contents__link toc-highlight">Write Client Configs</a><ul><li><a href="#Layout-Configs" class="table-of-contents__link toc-highlight">Layout Configs</a></li><li><a href="#Write-commit-callback-configs" class="table-of-contents__link toc-highlight">Write commit callback configs</a></li><li><a href="#Clean-Configs" class="table-of-contents__link toc-highlight">Clean Configs</a></li><li><a href="#Metastore-Configs" class="table-of-contents__link toc-highlight">Metastore Configs</a></li><li><a href="#Table-Configurations" class="table-of-contents__link toc-highlight">Table Configurations</a></li><li><a href="#Memory-Configurations" class="table-of-contents__link toc-highlight">Memory Configurations</a></li><li><a href="#DynamoDB-based-Locks-Configurations" class="table-of-contents__link toc-highlight">DynamoDB based Locks Configurations</a></li><li><a href="#Storage-Configs" class="table-of-contents__link toc-highlight">Storage Configs</a></li><li><a href="#Archival-Configs" class="table-of-contents__link toc-highlight">Archival Configs</a></li><li><a href="#Metadata-Configs" class="table-of-contents__link toc-highlight">Metadata Configs</a></li><li><a href="#Consistency-Guard-Configurations" class="table-of-contents__link toc-highlight">Consistency Guard Configurations</a></li><li><a href="#FileSystem-Guard-Configurations" class="table-of-contents__link toc-highlight">FileSystem Guard Configurations</a></li><li><a href="#Write-Configurations" class="table-of-contents__link toc-highlight">Write Configurations</a></li><li><a href="#Key-Generator-Options" class="table-of-contents__link toc-highlight">Key Generator Options</a></li><li><a href="#HBase-Index-Configs" class="table-of-contents__link toc-highlight">HBase Index Configs</a></li><li><a href="#Write-commit-pulsar-callback-configs" class="table-of-contents__link toc-highlight">Write commit pulsar callback configs</a></li><li><a href="#Write-commit-Kafka-callback-configs" class="table-of-contents__link toc-highlight">Write commit Kafka callback configs</a></li><li><a href="#Locks-Configurations" class="table-of-contents__link toc-highlight">Locks Configurations</a></li><li><a href="#Compaction-Configs" class="table-of-contents__link toc-highlight">Compaction Configs</a></li><li><a href="#File-System-View-Storage-Configurations" class="table-of-contents__link toc-highlight">File System View Storage Configurations</a></li><li><a href="#Index-Configs" class="table-of-contents__link toc-highlight">Index Configs</a></li><li><a href="#Clustering-Configs" class="table-of-contents__link toc-highlight">Clustering Configs</a></li><li><a href="#Common-Configurations" class="table-of-contents__link toc-highlight">Common Configurations</a></li><li><a href="#Bootstrap-Configs" class="table-of-contents__link toc-highlight">Bootstrap Configs</a></li></ul></li><li><a href="#METRICS" class="table-of-contents__link toc-highlight">Metrics Configs</a><ul><li><a href="#Metrics-Configurations-for-Datadog-reporter" class="table-of-contents__link toc-highlight">Metrics Configurations for Datadog reporter</a></li><li><a href="#Metrics-Configurations-for-Amazon-CloudWatch" class="table-of-contents__link toc-highlight">Metrics Configurations for Amazon CloudWatch</a></li><li><a href="#Metrics-Configurations" class="table-of-contents__link toc-highlight">Metrics Configurations</a></li><li><a href="#Metrics-Configurations-for-Jmx" class="table-of-contents__link toc-highlight">Metrics Configurations for Jmx</a></li><li><a href="#Metrics-Configurations-for-Prometheus" class="table-of-contents__link toc-highlight">Metrics Configurations for Prometheus</a></li><li><a href="#Metrics-Configurations-for-Graphite" class="table-of-contents__link toc-highlight">Metrics Configurations for Graphite</a></li></ul></li><li><a href="#RECORD_PAYLOAD" class="table-of-contents__link toc-highlight">Record Payload Config</a><ul><li><a href="#Payload-Configurations" class="table-of-contents__link toc-highlight">Payload Configurations</a></li></ul></li><li><a href="#KAFKA_CONNECT" class="table-of-contents__link toc-highlight">Kafka Connect Configs</a><ul><li><a href="#Kafka-Sink-Connect-Configurations" class="table-of-contents__link toc-highlight">Kafka Sink Connect Configurations</a></li></ul></li><li><a href="#AWS" class="table-of-contents__link toc-highlight">Amazon Web Services Configs</a><ul><li><a href="#Amazon-Web-Services-Configs" class="table-of-contents__link toc-highlight">Amazon Web Services Configs</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">About</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/blog/2021/07/21/streaming-data-lake-platform">Our Vision</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/concepts">Concepts</a></li><li class="footer__item"><a class="footer__link-item" href="/community/team">Team</a></li><li class="footer__item"><a class="footer__link-item" href="/releases/release-0.14.1">Releases</a></li><li class="footer__item"><a class="footer__link-item" href="/releases/download">Download</a></li><li class="footer__item"><a class="footer__link-item" href="/powered-by">Who&#x27;s Using</a></li></ul></div><div class="col footer__col"><div class="footer__title">Learn</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/quick-start-guide">Quick Start</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/docker_demo">Docker Demo</a></li><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a class="footer__link-item" href="/talks">Talks</a></li><li class="footer__item"><a class="footer__link-item" href="/videos">Video Guides</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/faq">FAQ</a></li><li class="footer__item"><a href="https://cwiki.apache.org/confluence/display/HUDI" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Technical Wiki<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li></ul></div><div class="col footer__col"><div class="footer__title">Hudi On Cloud</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/s3_hoodie">AWS</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/gcs_hoodie">Google Cloud</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/oss_hoodie">Alibaba Cloud</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/azure_hoodie">Microsoft Azure</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/cos_hoodie">Tencent Cloud</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/ibm_cos_hoodie">IBM Cloud</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/community/get-involved">Get Involved</a></li><li class="footer__item"><a href="https://join.slack.com/t/apache-hudi/shared_invite/zt-2ggm1fub8-_yt4Reu9djwqqVRFC7X49g" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Slack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li class="footer__item"><a href="https://github.com/apache/hudi" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li class="footer__item"><a href="https://twitter.com/ApacheHudi" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li class="footer__item"><a href="https://www.youtube.com/channel/UCs7AhE0BWaEPZSChrBR-Muw" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>YouTube<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li class="footer__item"><a href="https://www.linkedin.com/company/apache-hudi/?viewAsMember=true" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Linkedin<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li class="footer__item"><a href="mailto:dev-subscribe@hudi.apache.org?Subject=SubscribeToHudi" target="_blank" rel="noopener noreferrer" class="footer__link-item">Mailing List</a></li></ul></div><div class="col footer__col"><div class="footer__title">Apache</div><ul class="footer__items"><li class="footer__item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="footer__link-item">Events</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Thanks</a></li><li class="footer__item"><a href="https://www.apache.org/licenses" target="_blank" rel="noopener noreferrer" class="footer__link-item">License</a></li><li class="footer__item"><a href="https://www.apache.org/security" target="_blank" rel="noopener noreferrer" class="footer__link-item">Security</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sponsorship</a></li><li class="footer__item"><a href="https://www.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Foundation</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://hudi.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_SRtH"><img src="/assets/images/logo-big.png" alt="Apache Hudi™" class="themedImage_TMUO themedImage--light_4Vu1 footer__logo"><img src="/assets/images/logo-big.png" alt="Apache Hudi™" class="themedImage_TMUO themedImage--dark_uzRr footer__logo"></a></div><div class="footer__copyright">Copyright © 2021 <a href="https://apache.org">The Apache Software Foundation</a>, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0"> Apache License, Version 2.0</a>. <br>Hudi, Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</div></div></div></footer></div>
<script src="/assets/js/runtime~main.2cab5691.js"></script>
<script src="/assets/js/main.bd020950.js"></script>
</body>
</html>