1:HL["/_next/static/media/6905431624c34d00-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/_next/static/css/2348a33ca3156e53.css","style",{"crossOrigin":""}] 0:["bzIDbp42Ce9Ciwa_jtIfh",[[["",{"children":["blog",{"children":["page",{"children":[["page","3","d"],{"children":["__PAGE__?{\"page\":\"3\"}",{}]}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2348a33ca3156e53.css","precedence":"next","crossOrigin":""}]],"$L4"]]]] 5:I[7821,["326","static/chunks/326-3a90a6443b9c824c.js","980","static/chunks/980-6e243f9cd384c7d2.js","966","static/chunks/966-805f43b9d15f5094.js","185","static/chunks/app/layout-ce2fa075a6ed4b53.js"],"ThemeProviders"] 6:I[3994,["326","static/chunks/326-3a90a6443b9c824c.js","980","static/chunks/980-6e243f9cd384c7d2.js","966","static/chunks/966-805f43b9d15f5094.js","185","static/chunks/app/layout-ce2fa075a6ed4b53.js"],""] 7:I[9640,["326","static/chunks/326-3a90a6443b9c824c.js","980","static/chunks/980-6e243f9cd384c7d2.js","966","static/chunks/966-805f43b9d15f5094.js","185","static/chunks/app/layout-ce2fa075a6ed4b53.js"],"AlgoliaSearchProvider"] 8:I[7975,["326","static/chunks/326-3a90a6443b9c824c.js","980","static/chunks/980-6e243f9cd384c7d2.js","966","static/chunks/966-805f43b9d15f5094.js","185","static/chunks/app/layout-ce2fa075a6ed4b53.js"],""] 9:I[6954,[],""] a:I[7264,[],""] b:I[8326,["326","static/chunks/326-3a90a6443b9c824c.js","404","static/chunks/app/blog/page-c756fc3b03b27366.js"],""] d:I[4066,["326","static/chunks/326-3a90a6443b9c824c.js","557","static/chunks/557-a30b793d05ebcf34.js","107","static/chunks/app/blog/page/%5Bpage%5D/page-44b13dcda374a138.js"],""] f:["Pinot","Data","Analytics","User-Facing Analytics","deduplication"] 10:["needham"] 11:{"text":"8 min read","minutes":7.395,"time":443700,"words":1479} 13:{"value":"Why do we need deduplication on real-time tables?","url":"#why-do-we-need-deduplication-on-real-time-tables","depth":2} 14:{"value":"How does dedup differ from upserts?","url":"#how-does-dedup-differ-from-upserts","depth":2} 15:{"value":"Setting up Apache Kafka and Apache Pinot","url":"#setting-up-apache-kafka-and-apache-pinot","depth":2} 16:{"value":"Data Generation","url":"#data-generation","depth":2} 17:{"value":"Pinot Schema/Table Config","url":"#pinot-schematable-config","depth":2} 18:{"value":"How does it work? ","url":"#how-does-it-work","depth":2} 19:{"value":"Summary","url":"#summary","depth":2} 12:["$13","$14","$15","$16","$17","$18","$19"] 1a:{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Deduplication on Real-Time Tables","datePublished":"2023-01-29T00:00:00.000Z","dateModified":"2023-01-29T00:00:00.000Z","description":"Learn about the deduplication for the real-time tables feature in Apache Pinot","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-01-29-Apache-Pinot-Deduplication-on-Real-Time-Tables"} e:{"title":"Apache Pinot™ 0.11 - Deduplication on Real-Time Tables","date":"2023-01-29T00:00:00.000Z","tags":"$f","summary":"Learn about the deduplication for the real-time tables feature in Apache Pinot","authors":"$10","type":"Blog","readingTime":"$11","slug":"2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","customSlug":"2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","path":"blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","customPath":"blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","filePath":"blog/2023-01-29-Apache-Pinot-Deduplication-on-Real-Time-Tables.mdx","toc":"$12","structuredData":"$1a"} 1c:["Pinot","Data","Analytics","User-Facing Analytics","pause","resume","real-time ingestion"] 1d:["needham"] 1e:{"text":"7 min read","minutes":6.475,"time":388500,"words":1295} 20:{"value":"How does real-time ingestion work?","url":"#how-does-real-time-ingestion-work","depth":2} 21:{"value":"Why do we need to pause and resume ingestion?","url":"#why-do-we-need-to-pause-and-resume-ingestion","depth":2} 22:{"value":"Data Generation","url":"#data-generation","depth":2} 23:{"value":"Pinot Schema/Table Config","url":"#pinot-schematable-config","depth":2} 24:{"value":"The Pause/Resume Flow","url":"#the-pauseresume-flow","depth":2} 25:{"value":"Summary","url":"#summary","depth":2} 1f:["$20","$21","$22","$23","$24","$25"] 26:{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Pausing Real-Time Ingestion","datePublished":"2022-11-28T00:00:00.000Z","dateModified":"2022-11-28T00:00:00.000Z","description":"Learn about a feature that lets you pause and resume real-time data ingestion in Apache Pinot","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-28-Apache-Pinot-Pausing-Real-Time-Ingestion"} 1b:{"title":"Apache Pinot™ 0.11 - Pausing Real-Time Ingestion","date":"2022-11-28T00:00:00.000Z","tags":"$1c","summary":"Learn about a feature that lets you pause and resume real-time data ingestion in Apache Pinot","authors":"$1d","type":"Blog","readingTime":"$1e","slug":"2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","customSlug":"2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","path":"blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","customPath":"blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","filePath":"blog/2022-11-28-Apache-Pinot-Pausing-Real-Time-Ingestion.mdx","toc":"$1f","structuredData":"$26"} 28:["Pinot","Data","Analytics","User-Facing Analytics","Timestamp","datetrunc"] 29:["needham"] 2a:{"text":"8 min read","minutes":7.77,"time":466200,"words":1554} 2c:{"value":"Spinning up Pinot","url":"#spinning-up-pinot","depth":2} 2d:{"value":"Importing Chicago Crime Dataset","url":"#importing-chicago-crime-dataset","depth":2} 2e:{"value":"Querying crimes by date","url":"#querying-crimes-by-date","depth":2} 2f:{"value":"Adding the timestamp index","url":"#adding-the-timestamp-index","depth":2} 30:{"value":"What does a timestamp index do?","url":"#what-does-a-timestamp-index-do","depth":2} 31:{"value":"Re-running the query","url":"#re-running-the-query","depth":2} 32:{"value":"Summary","url":"#summary","depth":2} 2b:["$2c","$2d","$2e","$2f","$30","$31","$32"] 33:{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Timestamp Indexes","datePublished":"2022-11-22T00:00:00.000Z","dateModified":"2022-11-22T00:00:00.000Z","description":"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes. The timestamp index solves that problem!","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-22-Apache-Pinot-Timestamp-Indexes"} 27:{"title":"Apache Pinot™ 0.11 - Timestamp Indexes","date":"2022-11-22T00:00:00.000Z","tags":"$28","summary":"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes. The timestamp index solves that problem!","authors":"$29","type":"Blog","readingTime":"$2a","slug":"2022/11/22/Apache-Pinot-Timestamp-Indexes","customSlug":"2022/11/22/Apache-Pinot-Timestamp-Indexes","path":"blog/2022/11/22/Apache-Pinot-Timestamp-Indexes","customPath":"blog/2022/11/22/Apache-Pinot-Timestamp-Indexes","filePath":"blog/2022-11-22-Apache-Pinot-Timestamp-Indexes.mdx","toc":"$2b","structuredData":"$33"} 35:["Pinot","Data","Analytics","User-Facing Analytics","Insert"] 36:["needham"] 37:{"text":"4 min read","minutes":3.775,"time":226500,"words":755} 39:{"value":"Batch importing: The Job Specification","url":"#batch-importing-the-job-specification","depth":2} 3a:{"value":"Batch Importing with SQL","url":"#batch-importing-with-sql","depth":2} 3b:{"value":"Summary","url":"#summary","depth":2} 38:["$39","$3a","$3b"] 3c:{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Inserts from SQL","datePublished":"2022-11-17T00:00:00.000Z","dateModified":"2022-11-17T00:00:00.000Z","description":"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-17-Apache Pinot-Inserts-from-SQL"} 34:{"title":"Apache Pinot™ 0.11 - Inserts from SQL","date":"2022-11-17T00:00:00.000Z","tags":"$35","summary":"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.","authors":"$36","type":"Blog","readingTime":"$37","slug":"2022/11/17/Apache Pinot-Inserts-from-SQL","customSlug":"2022/11/17/Apache Pinot-Inserts-from-SQL","path":"blog/2022/11/17/Apache Pinot-Inserts-from-SQL","customPath":"blog/2022/11/17/Apache Pinot-Inserts-from-SQL","filePath":"blog/2022-11-17-Apache Pinot-Inserts-from-SQL.mdx","toc":"$38","structuredData":"$3c"} 3e:["Pinot","Data","Analytics","User-Facing Analytics","Indexes"] 3f:["needham"] 40:{"text":"4 min read","minutes":3.79,"time":227400,"words":758} 42:{"value":"Spinning up Pinot","url":"#spinning-up-pinot","depth":2} 43:{"value":"Indexing Config","url":"#indexing-config","depth":2} 44:{"value":"Viewing Indexes","url":"#viewing-indexes","depth":2} 45:{"value":"Adding an Index","url":"#adding-an-index","depth":2} 46:{"value":"Summary","url":"#summary","depth":2} 41:["$42","$43","$44","$45","$46"] 49:{"@type":"Person","name":"Mark Needham"} 48:["$49"] 47:{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - How do I see my indexes?","datePublished":"2022-11-08T00:00:00.000Z","dateModified":"2022-11-08T00:00:00.000Z","description":"How you can work out which indexes are currently defined on a Pinot table","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes","author":"$48"} 3d:{"title":"Apache Pinot™ 0.11 - How do I see my indexes?","date":"2022-11-08T00:00:00.000Z","tags":"$3e","summary":"How you can work out which indexes are currently defined on a Pinot table","authors":"$3f","type":"Blog","readingTime":"$40","slug":"2022/11/08/Apache Pinot-How-do-I-see-my-indexes","customSlug":"2022/11/08/Apache Pinot-How-do-I-see-my-indexes","path":"blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes","customPath":"blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes","filePath":"blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes.mdx","toc":"$41","structuredData":"$47"} 4a:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14 1.248.76 2.236 1.841 2.965 3.241.728 1.402 1.091 3.025 1.091 4.872s-.363 3.482-1.091 4.903c-.729 1.424-1.717 2.525-2.965 3.307-1.25.782-2.645 1.173-4.187 1.173-1.325 0-2.493-.271-3.503-.815-1.01-.543-1.83-1.226-2.46-2.053v14.612H36V17.912h4.562v2.606c.586-.825 1.395-1.515 2.426-2.068l.002-.002m6.452 5.605c-.445-.793-1.032-1.395-1.76-1.808a4.72 4.72 0 0 0-2.362-.618c-.847 0-1.602.211-2.33.635-.728.423-1.315 1.038-1.76 1.841-.445.804-.668 1.749-.668 2.835 0 1.087.221 2.032.668 2.835.445.804 1.032 1.417 1.76 1.842a4.557 4.557 0 0 0 2.33.635 4.57 4.57 0 0 0 2.362-.652c.728-.435 1.313-1.053 1.76-1.856.445-.804.668-1.76.668-2.867s-.223-2.025-.668-2.818v-.004M62.947 17.912v18.051h-4.562V17.912h4.562m.551-6.079a2.833 2.833 0 1 1-5.666 0 2.833 2.833 0 0 1 5.666 0M82.954 19.687c1.325 1.358 1.988 3.253 1.988 5.685v10.59H80.38v-9.97c0-1.434-.358-2.537-1.075-3.307-.717-.772-1.695-1.157-2.933-1.157-1.239 0-2.254.387-2.982 1.157-.728.772-1.091 1.873-1.091 3.307v9.97h-4.562V17.91h4.562v2.248a6.322 6.322 0 0 1 2.33-1.841c.944-.445 1.981-.669 3.111-.669 2.15 0 3.889.68 5.214 2.037v.002M92.892 35.098c-1.39-.77-2.482-1.861-3.275-3.275-.794-1.411-1.19-3.041-1.19-4.888s.406-3.475 1.221-4.888a8.502 8.502 0 0 1 3.34-3.275c1.412-.772 2.987-1.157 4.725-1.157 1.739 0 3.312.387 4.725 1.157a8.5 8.5 0 0 1 3.34 3.275c.815 1.411 1.222 3.041 1.222 4.888s-.418 3.475-1.255 4.888a8.708 8.708 0 0 1-3.388 3.275c-1.424.772-3.014 1.157-4.774 1.157-1.76 0-3.301-.385-4.691-1.157m7.021-3.421c.729-.402 1.309-1.005 1.744-1.809.435-.803.651-1.781.651-2.933 0-1.715-.451-3.035-1.351-3.958-.902-.924-2.004-1.385-3.307-1.385s-2.395.461-3.275 1.385c-.88.923-1.32 2.243-1.32 3.958 0 1.715.428 3.035 1.287 3.958.858.924 1.938 1.385 3.241 1.385.825 0 1.602-.2 2.33-.603v.002M115.96 21.658v8.734c0 .608.147 1.048.44 1.32.293.271.787.406 1.482.406H120v3.845h-2.867c-3.845 0-5.766-1.868-5.766-5.605v-8.7h-2.15v-3.746h2.15V13l4.595-1v5.912h4.04v3.746h-4.042M20.03 46.757l-5.538-1.385A1.97 1.97 0 0 1 13 43.46v-5.462c0-.841.349-1.601.907-2.146a12.212 12.212 0 0 0 6.975-3.644c2.602-2.731 3.627-6.578 2.882-10.251L21 9h-4V4a1 1 0 0 0-2 0v7a1 1 0 0 1-2 0v-1a1 1 0 0 0-2 0v6.758a4.489 4.489 0 0 1 2.694-.755c2.278.095 4.156 1.934 4.297 4.21a4.501 4.501 0 0 1-6.992 4.029V29a1 1 0 0 1-2 0V7a1 1 0 0 0-2 0v2h-4L.237 21.957c-.745 3.675.279 7.52 2.882 10.251a12.202 12.202 0 0 0 6.975 3.644c.558.545.907 1.305.907 2.146V43.4c0 .938-.639 1.757-1.55 1.985l-5.48 1.37c-.57.143-.97.655-.97 1.243h18c0-.588-.4-1.1-.97-1.243v.0023:[null,["$","html",null,{"lang":"en-us","className":"__variable_1fc36d scroll-smooth","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","meta",null,{"httpEquiv":"Content-Security-Policy","content":"default-src 'self';script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app analytics.umami.is www.youtube.com www.googletagmanager.com www.google-analytics.com;style-src 'self' 'unsafe-inline';img-src * blob: data:;media-src *.s3.amazonaws.com;connect-src *;font-src 'self';frame-src www.youtube.com youtube.com giscus.app youtu.be https://www.youtube.com https://youtube.com;"}],["$","link",null,{"rel":"apple-touch-icon","sizes":"76x76","href":"/static/favicons/apple-touch-icon.png"}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"32x32","href":"/static/favicons/favicon-32x32.png"}],["$","link",null,{"rel":"icon","type":"image/png","sizes":"16x16","href":"/static/favicons/favicon-16x16.png"}],["$","link",null,{"rel":"manifest","href":"/static/favicons/site.webmanifest"}],["$","link",null,{"rel":"mask-icon","href":"/static/favicons/safari-pinned-tab.svg","color":"#5bbad5"}],["$","meta",null,{"name":"msapplication-TileColor","content":"#000000"}],["$","meta",null,{"name":"theme-color","media":"(prefers-color-scheme: light)","content":"#fff"}],["$","meta",null,{"name":"theme-color","media":"(prefers-color-scheme: dark)","content":"#000"}],["$","link",null,{"rel":"alternate","type":"application/rss+xml","href":"/feed.xml"}]]}],["$","body",null,{"className":"bg-white text-black antialiased dark:bg-gray-950 dark:text-white","children":["$","$L5",null,{"children":[["$undefined","$undefined","$undefined","$undefined",[["$","$L6",null,{"strategy":"afterInteractive","src":"https://www.googletagmanager.com/gtag/js?id=G-ZXG79NJEBY"}],["$","$L6",null,{"strategy":"afterInteractive","id":"ga-script","children":"\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', 'G-ZXG79NJEBY');\n "}]]],["$","div",null,{"className":"mx-auto flex max-w-screen-customDesktop flex-col justify-between font-sans","children":["$","$L7",null,{"algoliaConfig":{"appId":"CKRA00L2X9","apiKey":"6531f8f7783a88d76629190843f1801e","indexName":"prod_apache_pinot_docs"},"children":[["$","$L8",null,{}],["$","main",null,{"children":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":["$","div",null,{"className":"flex flex-col items-start justify-start md:mt-24 md:flex-row md:items-center md:justify-center md:space-x-6","children":[["$","div",null,{"className":"space-x-2 pb-8 pt-6 md:space-y-5","children":["$","h1",null,{"className":"text-6xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 md:border-r-2 md:px-6 md:text-8xl md:leading-14","children":"404"}]}],["$","div",null,{"className":"max-w-md","children":[["$","p",null,{"className":"mb-4 text-xl font-bold leading-normal md:text-2xl","children":"Sorry we couldn't find this page."}],["$","p",null,{"className":"mb-8","children":"But dont worry, you can find plenty of other things on our homepage."}],["$","$Lb",null,{"href":"/","className":"focus:shadow-outline-blue inline rounded-lg border border-transparent bg-blue-600 px-4 py-2 text-sm font-medium leading-5 text-white shadow transition-colors duration-150 hover:bg-blue-700 focus:outline-none dark:hover:bg-blue-500","children":"Back to homepage"}]]}]]}],"notFoundStyles":[],"initialChildNode":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children","blog","children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","initialChildNode":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children","blog","children","page","children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","initialChildNode":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children","blog","children","page","children",["page","3","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","initialChildNode":["$Lc",["$","$Ld",null,{"posts":[{"title":"Announcing Apache Pinot 1.0™","date":"2023-09-19T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","joins","compression","null support","pluggable index","spark integration"],"summary":"Introducing Apache Pinot 1.0 Release","authors":["dulay","shrivastava","pawar"],"type":"Blog","readingTime":{"text":"13 min read","minutes":12.255,"time":735300,"words":2451},"slug":"2023/09/19/Annoucing-Apache-Pinot-1-0","customSlug":"2023/09/19/Annoucing-Apache-Pinot-1-0","path":"blog/2023/09/19/Annoucing-Apache-Pinot-1-0","customPath":"blog/2023/09/19/Annoucing-Apache-Pinot-1-0","filePath":"blog/2023-09-19-Annoucing-Apache-Pinot-1-0.mdx","toc":[{"value":"What Makes a “1.0 Release?”","url":"#what-makes-a-10-release","depth":2},{"value":"Join Support","url":"#join-support","depth":2},{"value":"Upsert Improvements","url":"#upsert-improvements","depth":2},{"value":"Segment Compaction for Upsert Tables","url":"#segment-compaction-for-upsert-tables","depth":3},{"value":"DELETE Support for Upsert Tables","url":"#delete-support-for-upsert-tables","depth":3},{"value":"NULL Value Support","url":"#null-value-support","depth":2},{"value":"Aggregations","url":"#aggregations","depth":3},{"value":"Group By","url":"#group-by","depth":3},{"value":"Sorting","url":"#sorting","depth":3},{"value":"Index Pluggability","url":"#index-pluggability","depth":2},{"value":"Apache Pinot Spark 3 Connector and Passing Pinot Options","url":"#apache-pinot-spark-3-connector-and-passing-pinot-options","depth":2},{"value":"Petabyte-Scale Log Storage and Search in Pinot with CLP","url":"#petabyte-scale-log-storage-and-search-in-pinot-with-clp","depth":2},{"value":"Summary","url":"#summary","depth":2},{"value":"Resources","url":"#resources","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Announcing Apache Pinot 1.0™","datePublished":"2023-09-19T00:00:00.000Z","dateModified":"2023-09-19T00:00:00.000Z","description":"Introducing Apache Pinot 1.0 Release","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-09-19-Annoucing-Apache-Pinot-1-0"}},{"title":"Segment Compaction for Upsert Enabled Tables in Apache Pinot","date":"2023-08-04T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","blog post","feature contribution","segment compaction","Apache Pinot project","older records","storage space","configuration","impact","freeing up storage"],"summary":"The blog post discusses the feature contribution of segment compaction to Apache Pinot project, addressing the issue of older records consuming unnecessary storage space. It explains the configuration and impact of segment compaction in freeing up storage. The author expresses gratitude and offers support for questions or feedback on segment compaction.","authors":["zych"],"type":"Blog","readingTime":{"text":"4 min read","minutes":3.565,"time":213900,"words":713},"slug":"2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077","customSlug":"2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077","path":"blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077","customPath":"blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077","filePath":"blog/2023-08-04-segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077.mdx","toc":[{"value":"Context and Configuration","url":"#context-and-configuration","depth":2},{"value":"Example Use Case","url":"#example-use-case","depth":2},{"value":"Conclusion","url":"#conclusion","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Segment Compaction for Upsert Enabled Tables in Apache Pinot","datePublished":"2023-08-04T00:00:00.000Z","dateModified":"2023-08-04T00:00:00.000Z","description":"The blog post discusses the feature contribution of segment compaction to Apache Pinot project, addressing the issue of older records consuming unnecessary storage space. It explains the configuration and impact of segment compaction in freeing up storage. The author expresses gratitude and offers support for questions or feedback on segment compaction.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-08-04-segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077"}},{"title":"Star-Tree Index in Apache Pinot - Part 3 - Understanding the Impact in Real Customer Scenarios","date":"2023-07-12T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","blog post","implementing","startree index","query performance","AdTech platform","reducing latency","cybersecurity threat detection","multiplayer game leaderboard tracking","improved query performance","cost savings","real production use cases","StarTree Cloud","realtime analytics","95% to 99% improvement"],"summary":"The blog post discusses how implementing a star-tree index significantly improved query performance for an AdTech platform by reducing latency. This index has also been successful in cybersecurity threat detection and multiplayer game leaderboard tracking, resulting in improved query performance and cost savings. Real production use cases showed a 95% to 99% improvement in query performance using StarTree Cloud for real-time analytics.","authors":["dabade","nijjer"],"type":"Blog","readingTime":{"text":"8 min read","minutes":7.675,"time":460500,"words":1535},"slug":"2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer","customSlug":"2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer","path":"blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer","customPath":"blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer","filePath":"blog/2023-07-12-star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer.mdx","toc":[{"value":"AdTech Use Case","url":"#adtech-use-case","depth":2},{"value":"Why was the existing system not working?","url":"#why-was-the-existing-system-not-working","depth":3},{"value":"The Problem and Challenges?","url":"#the-problem-and-challenges","depth":3},{"value":"Data Size and Infra Footprint for the Pilot: ","url":"#data-size-and-infra-footprint-for-the-pilot","depth":3},{"value":"Impact Summary:","url":"#impact-summary","depth":3},{"value":"CyberSecurity Use Case:","url":"#cybersecurity-use-case","depth":2},{"value":"Why was the existing system not working?","url":"#why-was-the-existing-system-not-working","depth":3},{"value":"The Problem and Challenges?","url":"#the-problem-and-challenges","depth":3},{"value":"Data Size and Infra Footprint for the Pilot: ","url":"#data-size-and-infra-footprint-for-the-pilot","depth":3},{"value":"Impact Summary:","url":"#impact-summary","depth":3},{"value":"Multiplayer Game Leaderboard Use Case","url":"#multiplayer-game-leaderboard-use-case","depth":2},{"value":"The Problem and Challenges?","url":"#the-problem-and-challenges","depth":3},{"value":"Data Size and Infra Footprint for the Pilot: ","url":"#data-size-and-infra-footprint-for-the-pilot","depth":3},{"value":"Impact Summary:","url":"#impact-summary","depth":3},{"value":"Quick Recap: Star-Tree Index Performance Improvements","url":"#quick-recap-star-tree-index-performance-improvements","depth":2},{"value":"Intrigued by What You’ve Read?","url":"#intrigued-by-what-youve-read","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Star-Tree Index in Apache Pinot - Part 3 - Understanding the Impact in Real Customer Scenarios","datePublished":"2023-07-12T00:00:00.000Z","dateModified":"2023-07-12T00:00:00.000Z","description":"The blog post discusses how implementing a star-tree index significantly improved query performance for an AdTech platform by reducing latency. This index has also been successful in cybersecurity threat detection and multiplayer game leaderboard tracking, resulting in improved query performance and cost savings. Real production use cases showed a 95% to 99% improvement in query performance using StarTree Cloud for real-time analytics.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-07-12-star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer"}},{"title":"Real-Time Mastodon Usage with Apache Kafka, Apache Pinot, and Streamlit","date":"2023-06-01T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","blog post","analyzing user activity","server popularity","Mastodon","Kafka Connect","Parquet","Seaborn","DuckDB","potential","Apache Pinot","realtime data streaming","dashboard","instructions","ingesting","Apache Avro messages","Pinot table","querying data"],"summary":"The blog post discusses analyzing user activity and server popularity on Mastodon using Kafka Connect, Parquet, Seaborn, and DuckDB. It explores the potential of using Apache Pinot for real-time data streaming and creating a dashboard. The post provides instructions on ingesting Apache Avro messages into Pinot, creating a Pinot table, and querying the data.","authors":["needham"],"type":"Blog","readingTime":{"text":"7 min read","minutes":6.755,"time":405300,"words":1351},"slug":"2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","customSlug":"2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","path":"blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","customPath":"blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","filePath":"blog/2023-06-01-real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit.mdx","toc":[{"value":"The Existing Solution: Kafka Connect, Parquet, Seaborn and DuckDB ","url":"#the-existing-solution-kafka-connect-parquet-seaborn-and-duckdb","depth":2},{"value":"Going Real-Time with Apache Pinot™","url":"#going-real-time-with-apache-pinot","depth":2},{"value":"Setup","url":"#setup","depth":2},{"value":"Pinot Schema and Table","url":"#pinot-schema-and-table","depth":2},{"value":"Ingest Data into Kafka","url":"#ingest-data-into-kafka","depth":2},{"value":"Query Pinot","url":"#query-pinot","depth":2},{"value":"Streamlit","url":"#streamlit","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Real-Time Mastodon Usage with Apache Kafka, Apache Pinot, and Streamlit","datePublished":"2023-06-01T00:00:00.000Z","dateModified":"2023-06-01T00:00:00.000Z","description":"The blog post discusses analyzing user activity and server popularity on Mastodon using Kafka Connect, Parquet, Seaborn, and DuckDB. It explores the potential of using Apache Pinot for real-time data streaming and creating a dashboard. The post provides instructions on ingesting Apache Avro messages into Pinot, creating a Pinot table, and querying the data.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-06-01-real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","author":[{"@type":"Person","name":"Mark Needham"}]}},{"title":"Change Data Capture with Apache Pinot - How Does It Work?","date":"2023-05-23T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","CDC","Debezium"],"summary":"This blog post discusses the use of Change Data Capture (CDC) in Apache Pinot and the data format used in Debezium for efficient querying and analytics. It explains the elements of the format and its usage in indexing JSON fields. It also mentions the availability of CDC connectors in Debezium for various streaming systems.","authors":["dulay"],"type":"Blog","readingTime":{"text":"10 min read","minutes":9.105,"time":546300,"words":1821},"slug":"2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work","customSlug":"2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work","path":"blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work","customPath":"blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work","filePath":"blog/2023-05-23-change-data-capture-with-apache-pinot-how-does-it-work.mdx","toc":[{"value":"Pre-Image, Post-Image, or Diffs?","url":"#pre-image-post-image-or-diffs","depth":2},{"value":"How to Capture Change Data with Debezium","url":"#how-to-capture-change-data-with-debezium","depth":2},{"value":"Debezium Data Format","url":"#debezium-data-format","depth":2},{"value":"Materialized Views","url":"#materialized-views","depth":2},{"value":"Upsert in Apache Pinot","url":"#upsert-in-apache-pinot","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Change Data Capture with Apache Pinot - How Does It Work?","datePublished":"2023-05-23T00:00:00.000Z","dateModified":"2023-05-23T00:00:00.000Z","description":"This blog post discusses the use of Change Data Capture (CDC) in Apache Pinot and the data format used in Debezium for efficient querying and analytics. It explains the elements of the format and its usage in indexing JSON fields. It also mentions the availability of CDC connectors in Debezium for various streaming systems.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-05-23-change-data-capture-with-apache-pinot-how-does-it-work"}},{"title":"Apache Pinot Tutorial for Getting Started - A Step-by-Step Guide","date":"2023-05-18T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","data explorer","getting started","streaming","kafka"],"summary":"This blog post is a guide to getting started with Apache Pinot, including installing and running the necessary components of a Pinot cluster. It also explains how to set up schemas, tables, and load data into Pinot, as well as how to run queries using the Pinot Data Explorer. The next article in the series will cover consuming event streaming data with Apache Pinot and Apache Kafka.","authors":["herman"],"type":"Blog","readingTime":{"text":"8 min read","minutes":7.91,"time":474600,"words":1582},"slug":"2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","customSlug":"2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","path":"blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","customPath":"blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","filePath":"blog/2023-05-18-apache-pinot-tutorial-for-getting-started-a-step-by-step-guide.mdx","toc":[{"value":"The Obligatory What is Apache Pinot and StarTree Section","url":"#the-obligatory-what-is-apache-pinot-and-startree-section","depth":2},{"value":"What do you need to run Apache Pinot?","url":"#what-do-you-need-to-run-apache-pinot","depth":2},{"value":"Step-by-step installation of Apache Pinot","url":"#step-by-step-installation-of-apache-pinot","depth":2},{"value":"Step 1: ","url":"#step-1","depth":3},{"value":"Step 2:","url":"#step-2","depth":3},{"value":"Step 3:","url":"#step-3","depth":3},{"value":"Step 4:","url":"#step-4","depth":3},{"value":"Step 5:","url":"#step-5","depth":3},{"value":"What’s under the hood?","url":"#whats-under-the-hood","depth":2},{"value":"Conclusion","url":"#conclusion","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot Tutorial for Getting Started - A Step-by-Step Guide","datePublished":"2023-05-18T00:00:00.000Z","dateModified":"2023-05-18T00:00:00.000Z","description":"This blog post is a guide to getting started with Apache Pinot, including installing and running the necessary components of a Pinot cluster. It also explains how to set up schemas, tables, and load data into Pinot, as well as how to run queries using the Pinot Data Explorer. The next article in the series will cover consuming event streaming data with Apache Pinot and Apache Kafka.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-05-18-apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","author":[{"@type":"Person","name":"Barkha Herman"}]}},{"title":"StarTree Indexes in Apache Pinot Part-1 - Understanding the Impact on Query Performance","date":"2023-05-16T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","star-tree index"],"summary":"The blog post explains the star-tree index in Apache Pinot and its benefits compared to traditional materialized views. By implementing a star-tree index, query performance significantly improved, reducing query latency from 1,513 ms to just 4 ms and drastically reducing disk reads by 99.999%.","authors":["dabade"],"type":"Blog","readingTime":{"text":"7 min read","minutes":6.25,"time":375000,"words":1250},"slug":"2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance","customSlug":"2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance","path":"blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance","customPath":"blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance","filePath":"blog/2023-05-16-star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance.mdx","toc":[{"value":"1. The Dataset:","url":"#1-the-dataset","depth":2},{"value":"Schema:","url":"#schema","depth":3},{"value":"2. Query Pattern","url":"#2-query-pattern","depth":2},{"value":"Star-Tree Index Config:","url":"#star-tree-index-config","depth":3},{"value":"4. Query Results and Stats","url":"#4-query-results-and-stats","depth":2},{"value":"Iteration #1: w/o any Apache Pinot optimizations:","url":"#iteration-1-wo-any-apache-pinot-optimizations","depth":3},{"value":"Iteration #2: w/ Inverted Index ","url":"#iteration-2-w-inverted-index","depth":3},{"value":"Iteration #3: w/ Star-Tree Index: ","url":"#iteration-3-w-star-tree-index","depth":3},{"value":"Comparison:","url":"#comparison","depth":3},{"value":"5. Impact Summary:","url":"#5-impact-summary","depth":2},{"value":"Key Benefits of the Star-Tree Index:","url":"#key-benefits-of-the-star-tree-index","depth":3}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"StarTree Indexes in Apache Pinot Part-1 - Understanding the Impact on Query Performance","datePublished":"2023-05-16T00:00:00.000Z","dateModified":"2023-05-16T00:00:00.000Z","description":"The blog post explains the star-tree index in Apache Pinot and its benefits compared to traditional materialized views. By implementing a star-tree index, query performance significantly improved, reducing query latency from 1,513 ms to just 4 ms and drastically reducing disk reads by 99.999%.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-05-16-star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance"}},{"title":"Geospatial Indexing in Apache Pinot","date":"2023-05-11T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","geospatial indexing"],"summary":"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.","authors":["needham"],"type":"Blog","readingTime":{"text":"9 min read","minutes":8.305,"time":498300,"words":1661},"slug":"2023/05/11/Geospatial-Indexing-in-Apache-Pinot","customSlug":"2023/05/11/Geospatial-Indexing-in-Apache-Pinot","path":"blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot","customPath":"blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot","filePath":"blog/2023-05-11-Geospatial-Indexing-in-Apache-Pinot.mdx","toc":[{"value":"What is geospatial indexing?","url":"#what-is-geospatial-indexing","depth":2},{"value":"How do geospatial indexes work in Apache Pinot?","url":"#how-do-geospatial-indexes-work-in-apache-pinot","depth":2},{"value":"When is the geospatial index used?","url":"#when-is-the-geospatial-index-used","depth":2},{"value":"How do you know the index usage?","url":"#how-do-you-know-the-index-usage","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Geospatial Indexing in Apache Pinot","datePublished":"2023-05-11T00:00:00.000Z","dateModified":"2023-05-11T00:00:00.000Z","description":"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-05-11-Geospatial-Indexing-in-Apache-Pinot"}},{"title":"Apache Pinot™ 0.12 - Consumer Record Lag","date":"2023-03-30T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","consumer record lag","kafka"],"summary":"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.","authors":["needham"],"type":"Blog","readingTime":{"text":"5 min read","minutes":4.57,"time":274200,"words":914},"slug":"2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag","customSlug":"2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag","path":"blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag","customPath":"blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag","filePath":"blog/2023-03-30-Apache-Pinot-0-12-Consumer-Record-Lag.mdx","toc":[{"value":"Why do we need this?","url":"#why-do-we-need-this","depth":2},{"value":"Worked Example","url":"#worked-example","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.12 - Consumer Record Lag","datePublished":"2023-03-30T00:00:00.000Z","dateModified":"2023-03-30T00:00:00.000Z","description":"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-03-30-Apache-Pinot-0-12-Consumer-Record-Lag","author":[{"@type":"Person","name":"Mark Needham"}]}},{"title":"Apache Pinot™ 0.12 - Configurable Time Boundary","date":"2023-02-21T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","hybrid tables","time boundary"],"summary":"This post will explore the ability to configure the time boundary when working with hybrid tables.","authors":["needham"],"type":"Blog","readingTime":{"text":"4 min read","minutes":3.415,"time":204900,"words":683},"slug":"2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary","customSlug":"2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary","path":"blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary","customPath":"blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary","filePath":"blog/2023-02-21-Apache-Pinot-0-12-Configurable-Time-Boundary.mdx","toc":[{"value":"What is a hybrid table?","url":"#what-is-a-hybrid-table","depth":2},{"value":"How do you query a hybrid table?","url":"#how-do-you-query-a-hybrid-table","depth":2},{"value":"So, what’s the problem?","url":"#so-whats-the-problem","depth":2},{"value":"And the solution?","url":"#and-the-solution","depth":2},{"value":"Neat, anything else I should know?","url":"#neat-anything-else-i-should-know","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.12 - Configurable Time Boundary","datePublished":"2023-02-21T00:00:00.000Z","dateModified":"2023-02-21T00:00:00.000Z","description":"This post will explore the ability to configure the time boundary when working with hybrid tables.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-02-21-Apache-Pinot-0-12-Configurable-Time-Boundary","author":[{"@type":"Person","name":"Mark Needham"}]}},{"title":"Apache Pinot™ 0.11 - Deduplication on Real-Time Tables","date":"2023-01-29T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","deduplication"],"summary":"Learn about the deduplication for the real-time tables feature in Apache Pinot","authors":["needham"],"type":"Blog","readingTime":{"text":"8 min read","minutes":7.395,"time":443700,"words":1479},"slug":"2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","customSlug":"2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","path":"blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","customPath":"blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","filePath":"blog/2023-01-29-Apache-Pinot-Deduplication-on-Real-Time-Tables.mdx","toc":[{"value":"Why do we need deduplication on real-time tables?","url":"#why-do-we-need-deduplication-on-real-time-tables","depth":2},{"value":"How does dedup differ from upserts?","url":"#how-does-dedup-differ-from-upserts","depth":2},{"value":"Setting up Apache Kafka and Apache Pinot","url":"#setting-up-apache-kafka-and-apache-pinot","depth":2},{"value":"Data Generation","url":"#data-generation","depth":2},{"value":"Pinot Schema/Table Config","url":"#pinot-schematable-config","depth":2},{"value":"How does it work? ","url":"#how-does-it-work","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Deduplication on Real-Time Tables","datePublished":"2023-01-29T00:00:00.000Z","dateModified":"2023-01-29T00:00:00.000Z","description":"Learn about the deduplication for the real-time tables feature in Apache Pinot","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-01-29-Apache-Pinot-Deduplication-on-Real-Time-Tables"}},{"title":"Apache Pinot™ 0.11 - Pausing Real-Time Ingestion","date":"2022-11-28T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","pause","resume","real-time ingestion"],"summary":"Learn about a feature that lets you pause and resume real-time data ingestion in Apache Pinot","authors":["needham"],"type":"Blog","readingTime":{"text":"7 min read","minutes":6.475,"time":388500,"words":1295},"slug":"2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","customSlug":"2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","path":"blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","customPath":"blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","filePath":"blog/2022-11-28-Apache-Pinot-Pausing-Real-Time-Ingestion.mdx","toc":[{"value":"How does real-time ingestion work?","url":"#how-does-real-time-ingestion-work","depth":2},{"value":"Why do we need to pause and resume ingestion?","url":"#why-do-we-need-to-pause-and-resume-ingestion","depth":2},{"value":"Data Generation","url":"#data-generation","depth":2},{"value":"Pinot Schema/Table Config","url":"#pinot-schematable-config","depth":2},{"value":"The Pause/Resume Flow","url":"#the-pauseresume-flow","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Pausing Real-Time Ingestion","datePublished":"2022-11-28T00:00:00.000Z","dateModified":"2022-11-28T00:00:00.000Z","description":"Learn about a feature that lets you pause and resume real-time data ingestion in Apache Pinot","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-28-Apache-Pinot-Pausing-Real-Time-Ingestion"}},{"title":"Apache Pinot™ 0.11 - Timestamp Indexes","date":"2022-11-22T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","Timestamp","datetrunc"],"summary":"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes. The timestamp index solves that problem!","authors":["needham"],"type":"Blog","readingTime":{"text":"8 min read","minutes":7.77,"time":466200,"words":1554},"slug":"2022/11/22/Apache-Pinot-Timestamp-Indexes","customSlug":"2022/11/22/Apache-Pinot-Timestamp-Indexes","path":"blog/2022/11/22/Apache-Pinot-Timestamp-Indexes","customPath":"blog/2022/11/22/Apache-Pinot-Timestamp-Indexes","filePath":"blog/2022-11-22-Apache-Pinot-Timestamp-Indexes.mdx","toc":[{"value":"Spinning up Pinot","url":"#spinning-up-pinot","depth":2},{"value":"Importing Chicago Crime Dataset","url":"#importing-chicago-crime-dataset","depth":2},{"value":"Querying crimes by date","url":"#querying-crimes-by-date","depth":2},{"value":"Adding the timestamp index","url":"#adding-the-timestamp-index","depth":2},{"value":"What does a timestamp index do?","url":"#what-does-a-timestamp-index-do","depth":2},{"value":"Re-running the query","url":"#re-running-the-query","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Timestamp Indexes","datePublished":"2022-11-22T00:00:00.000Z","dateModified":"2022-11-22T00:00:00.000Z","description":"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes. The timestamp index solves that problem!","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-22-Apache-Pinot-Timestamp-Indexes"}},{"title":"Apache Pinot™ 0.11 - Inserts from SQL","date":"2022-11-17T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","Insert"],"summary":"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.","authors":["needham"],"type":"Blog","readingTime":{"text":"4 min read","minutes":3.775,"time":226500,"words":755},"slug":"2022/11/17/Apache Pinot-Inserts-from-SQL","customSlug":"2022/11/17/Apache Pinot-Inserts-from-SQL","path":"blog/2022/11/17/Apache Pinot-Inserts-from-SQL","customPath":"blog/2022/11/17/Apache Pinot-Inserts-from-SQL","filePath":"blog/2022-11-17-Apache Pinot-Inserts-from-SQL.mdx","toc":[{"value":"Batch importing: The Job Specification","url":"#batch-importing-the-job-specification","depth":2},{"value":"Batch Importing with SQL","url":"#batch-importing-with-sql","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - Inserts from SQL","datePublished":"2022-11-17T00:00:00.000Z","dateModified":"2022-11-17T00:00:00.000Z","description":"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-17-Apache Pinot-Inserts-from-SQL"}},{"title":"Apache Pinot™ 0.11 - How do I see my indexes?","date":"2022-11-08T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","Indexes"],"summary":"How you can work out which indexes are currently defined on a Pinot table","authors":["needham"],"type":"Blog","readingTime":{"text":"4 min read","minutes":3.79,"time":227400,"words":758},"slug":"2022/11/08/Apache Pinot-How-do-I-see-my-indexes","customSlug":"2022/11/08/Apache Pinot-How-do-I-see-my-indexes","path":"blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes","customPath":"blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes","filePath":"blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes.mdx","toc":[{"value":"Spinning up Pinot","url":"#spinning-up-pinot","depth":2},{"value":"Indexing Config","url":"#indexing-config","depth":2},{"value":"Viewing Indexes","url":"#viewing-indexes","depth":2},{"value":"Adding an Index","url":"#adding-an-index","depth":2},{"value":"Summary","url":"#summary","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Apache Pinot™ 0.11 - How do I see my indexes?","datePublished":"2022-11-08T00:00:00.000Z","dateModified":"2022-11-08T00:00:00.000Z","description":"How you can work out which indexes are currently defined on a Pinot table","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes","author":[{"@type":"Person","name":"Mark Needham"}]}},{"title":"GapFill Function For Time-Series Datasets In Pinot","date":"2022-08-02T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","interpolation","gapfilling"],"summary":"Gapfilling functions in Pinot to provide the on-the-fly interpolation (filling the missing data) functionality to better handle time-series data.","authors":["sun","velusamy"],"type":"Blog","readingTime":{"text":"9 min read","minutes":8.59,"time":515400,"words":1718},"slug":"2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot","customSlug":"2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot","path":"blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot","customPath":"blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot","filePath":"blog/2022-08-02-GapFill-Function-For-Time-Series-Datasets-In-Pinot.mdx","toc":[{"value":"Processing time series data in Pinot","url":"#processing-time-series-data-in-pinot","depth":2},{"value":"Sample Dataset:","url":"#sample-dataset","depth":3},{"value":"Interpolating missing data","url":"#interpolating-missing-data","depth":2},{"value":"Gapfill Query with a Use Case:","url":"#gapfill-query-with-a-use-case","depth":2},{"value":"Query Syntax:","url":"#query-syntax","depth":3},{"value":"Query components:","url":"#query-components","depth":3},{"value":"Query Workflow","url":"#query-workflow","depth":3},{"value":"Other Supported Query Scenarios:","url":"#other-supported-query-scenarios","depth":3},{"value":"How does it work?","url":"#how-does-it-work","depth":2},{"value":"Request Flow","url":"#request-flow","depth":3},{"value":"Execution Plan","url":"#execution-plan","depth":3},{"value":"Time and Space complexity:","url":"#time-and-space-complexity","depth":3},{"value":"Challenges","url":"#challenges","depth":3},{"value":"The Future Work","url":"#the-future-work","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"GapFill Function For Time-Series Datasets In Pinot","datePublished":"2022-08-02T00:00:00.000Z","dateModified":"2022-08-02T00:00:00.000Z","description":"Gapfilling functions in Pinot to provide the on-the-fly interpolation (filling the missing data) functionality to better handle time-series data.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-08-02-GapFill-Function-For-Time-Series-Datasets-In-Pinot"}},{"title":"How to Ingest Streaming Data from Kafka to Apache Pinot™","date":"2022-05-30T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","kafka","streaming","json"],"summary":"The blog post explains how to use Apache Kafka topics in Apache Pinot to ingest streaming data, with step-by-step instructions provided for installation and setup. It focuses on ingesting Wikipedia events into Kafka and connecting it to Pinot to create a real-time table. The post highlights Pinot's capabilities in ingesting and transforming JSON data into OLAP tables and encourages reader engagement through the community Slack.","authors":["herman"],"type":"Blog","readingTime":{"text":"9 min read","minutes":8.935,"time":536100,"words":1787},"slug":"2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot","customSlug":"2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot","path":"blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot","customPath":"blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot","filePath":"blog/2023-05-30-how-to-ingest-streaming-data-from-kafka-to-apache-pinot.mdx","toc":[{"value":"The obligatory “What is Apache Pinot and StarTree?” section","url":"#the-obligatory-what-is-apache-pinot-and-startree-section","depth":3},{"value":"How to install Kafka alongside Pinot ","url":"#how-to-install-kafka-alongside-pinot","depth":2},{"value":"Prerequisite","url":"#prerequisite","depth":3},{"value":"Step 1: Install Kafka on your Pinot Docker image","url":"#step-1-install-kafka-on-your-pinot-docker-image","depth":3},{"value":"Step 2: Install Kafka on the Docker container","url":"#step-2-install-kafka-on-the-docker-container","depth":3},{"value":"Step 3: Ingest data into Kafka","url":"#step-3-ingest-data-into-kafka","depth":3},{"value":"Step 4: Connect Kafka to Pinot","url":"#step-4-connect-kafka-to-pinot","depth":3},{"value":"Conclusion","url":"#conclusion","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"How to Ingest Streaming Data from Kafka to Apache Pinot™","datePublished":"2022-05-30T00:00:00.000Z","dateModified":"2022-05-30T00:00:00.000Z","description":"The blog post explains how to use Apache Kafka topics in Apache Pinot to ingest streaming data, with step-by-step instructions provided for installation and setup. It focuses on ingesting Wikipedia events into Kafka and connecting it to Pinot to create a real-time table. The post highlights Pinot's capabilities in ingesting and transforming JSON data into OLAP tables and encourages reader engagement through the community Slack.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2023-05-30-how-to-ingest-streaming-data-from-kafka-to-apache-pinot"}},{"title":"Announcing Apache Pinot 0.10","date":"2022-04-04T00:00:00.000Z","tags":["Pinot","Data","Analytics","User-Facing Analytics","Releases"],"summary":"Learn more about the release of Apache Pinot 0.10 and all of new features that have been included in this version of the product.","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"5 min read","minutes":4.975,"time":298500,"words":995},"slug":"2022/04/04/Announcing-Apache-Pinot-0-10","customSlug":"2022/04/04/Announcing-Apache-Pinot-0-10","path":"blog/2022/04/04/Announcing-Apache-Pinot-0-10","customPath":"blog/2022/04/04/Announcing-Apache-Pinot-0-10","filePath":"blog/2022-04-04-Announcing-Apache-Pinot-0-10.mdx","toc":[{"value":"Query Plans","url":"#query-plans","depth":2},{"value":"FILTER Clauses for Aggregates","url":"#filter-clauses-for-aggregates","depth":2},{"value":"greatest and least","url":"#greatest-and-least","depth":2},{"value":"DistinctCountSmartHLL","url":"#distinctcountsmarthll","depth":2},{"value":"UI updates","url":"#ui-updates","depth":2},{"value":"RealTimeToOffline Task","url":"#realtimetooffline-task","depth":2},{"value":"Empty QuickStart","url":"#empty-quickstart","depth":2},{"value":"Data Ingestion","url":"#data-ingestion","depth":2},{"value":"Other changes","url":"#other-changes","depth":2},{"value":"Dependency updates","url":"#dependency-updates","depth":2},{"value":"Resources","url":"#resources","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Announcing Apache Pinot 0.10","datePublished":"2022-04-04T00:00:00.000Z","dateModified":"2022-04-04T00:00:00.000Z","description":"Learn more about the release of Apache Pinot 0.10 and all of new features that have been included in this version of the product.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2022-04-04-Announcing-Apache-Pinot-0-10"}},{"title":"Text analytics on LinkedIn Talent Insights using Apache Pinot","date":"2021-06-16T00:00:00.000Z","tags":["Pinot","LinkedIn","Data","Text analytics","real-time data platform","Realtime","ThirdEye","Analytics","User-Facing Analytics"],"summary":"Introduction LinkedIn Talent Insights (LTI) is a platform that helps organizations understand the external labor market and their internal workforce, and enables the long term success of their employees","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.32,"time":19200,"words":64},"slug":"2021/06/16/LinkedIn-TextAnalytics","customSlug":"2021/06/16/LinkedIn-TextAnalytics","path":"blog/2021/06/16/LinkedIn-TextAnalytics","customPath":"blog/2021/06/16/LinkedIn-TextAnalytics","filePath":"blog/2021-06-16-LinkedIn-TextAnalytics.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Text analytics on LinkedIn Talent Insights using Apache Pinot","datePublished":"2021-06-16T00:00:00.000Z","dateModified":"2021-06-16T00:00:00.000Z","description":"Introduction LinkedIn Talent Insights (LTI) is a platform that helps organizations understand the external labor market and their internal workforce, and enables the long term success of their employees","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-06-16-LinkedIn-TextAnalytics","author":[{"@type":"Person","name":"LinkedIn Engineering Team"}]}},{"title":"Introduction to Geospatial Queries in Apache Pinot","date":"2021-06-13T00:00:00.000Z","tags":["Pinot","DevBlog","H3","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Discuss the challenges of analyzing geospatial at scale and propose the geospatial support in Pinot.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.42,"time":25200,"words":84},"slug":"2021/06/13/DevBlog-Geospatial","customSlug":"2021/06/13/DevBlog-Geospatial","path":"blog/2021/06/13/DevBlog-Geospatial","customPath":"blog/2021/06/13/DevBlog-Geospatial","filePath":"blog/2021-06-13-DevBlog-Geospatial.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Introduction to Geospatial Queries in Apache Pinot","datePublished":"2021-06-13T00:00:00.000Z","dateModified":"2021-06-13T00:00:00.000Z","description":"Discuss the challenges of analyzing geospatial at scale and propose the geospatial support in Pinot.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-06-13-DevBlog-Geospatial"}},{"title":"Automating Merchant Live Monitoring with Real-Time Analytics - Charon","date":"2021-04-29T00:00:00.000Z","tags":["Pinot","Uber","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on Uber’s real-time data platform components to build a tool called Charon to reduce impact of poor marketplace reliability on the merchants.","authors":["uber"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.72,"time":43200,"words":144},"slug":"2021/04/29/Uber-Charon","customSlug":"2021/04/29/Uber-Charon","path":"blog/2021/04/29/Uber-Charon","customPath":"blog/2021/04/29/Uber-Charon","filePath":"blog/2021-04-29-Uber-Charon.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Automating Merchant Live Monitoring with Real-Time Analytics - Charon","datePublished":"2021-04-29T00:00:00.000Z","dateModified":"2021-04-29T00:00:00.000Z","description":"Focus on Uber’s real-time data platform components to build a tool called Charon to reduce impact of poor marketplace reliability on the merchants.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-04-29-Uber-Charon"}},{"title":"Deploying Apache Pinot at a Large Retail Chain","date":"2021-04-27T00:00:00.000Z","tags":["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.175,"time":10500,"words":35},"slug":"2021/04/27/DevBlog-PinotInRetailChain","customSlug":"2021/04/27/DevBlog-PinotInRetailChain","path":"blog/2021/04/27/DevBlog-PinotInRetailChain","customPath":"blog/2021/04/27/DevBlog-PinotInRetailChain","filePath":"blog/2021-04-27-DevBlog-PinotInRetailChain.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Deploying Apache Pinot at a Large Retail Chain","datePublished":"2021-04-27T00:00:00.000Z","dateModified":"2021-04-27T00:00:00.000Z","description":"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-04-27-DevBlog-PinotInRetailChain","author":[{"@type":"Person","name":"Pinot Dev"}]}},{"title":"Solving for the cardinality of set intersection at scale with Pinot and Theta Sketches","date":"2021-04-16T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.205,"time":12300,"words":41},"slug":"2021/04/16/LinkedIn-Theta","customSlug":"2021/04/16/LinkedIn-Theta","path":"blog/2021/04/16/LinkedIn-Theta","customPath":"blog/2021/04/16/LinkedIn-Theta","filePath":"blog/2021-04-16-LinkedIn-Theta.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Solving for the cardinality of set intersection at scale with Pinot and Theta Sketches","datePublished":"2021-04-16T00:00:00.000Z","dateModified":"2021-04-16T00:00:00.000Z","description":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-04-16-LinkedIn-Theta"}},{"title":"Using Apache Pinot and Kafka to Analyze GitHub Events","date":"2021-04-10T00:00:00.000Z","tags":["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Show you how Pinot and Kafka can be used together to ingest, query, and visualize event streams sourced from the public GitHub API.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.32,"time":19200,"words":64},"slug":"2020/04/10/DevBlog-AnalyzeGitEvents","customSlug":"2020/04/10/DevBlog-AnalyzeGitEvents","path":"blog/2020/04/10/DevBlog-AnalyzeGitEvents","customPath":"blog/2020/04/10/DevBlog-AnalyzeGitEvents","filePath":"blog/2020-04-10-DevBlog-AnalyzeGitEvents.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Using Apache Pinot and Kafka to Analyze GitHub Events","datePublished":"2021-04-10T00:00:00.000Z","dateModified":"2021-04-10T00:00:00.000Z","description":"Show you how Pinot and Kafka can be used together to ingest, query, and visualize event streams sourced from the public GitHub API.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-04-10-DevBlog-AnalyzeGitEvents","author":[{"@type":"Person","name":"Hubert Dulay"}]}},{"title":"Introduction to Upserts in Apache Pinot","date":"2021-04-08T00:00:00.000Z","tags":["Pinot","DevBlog","Upsert","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Introduction to Pinot Upsert and explain why it’s exciting and how you can start using it.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.465,"time":27900,"words":93},"slug":"2021/04/08/DevBlog-UpsertsIntro","customSlug":"2021/04/08/DevBlog-UpsertsIntro","path":"blog/2021/04/08/DevBlog-UpsertsIntro","customPath":"blog/2021/04/08/DevBlog-UpsertsIntro","filePath":"blog/2021-04-08-DevBlog-UpsertsIntro.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Introduction to Upserts in Apache Pinot","datePublished":"2021-04-08T00:00:00.000Z","dateModified":"2021-04-08T00:00:00.000Z","description":"Introduction to Pinot Upsert and explain why it’s exciting and how you can start using it.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-04-08-DevBlog-UpsertsIntro","author":[{"@type":"Person","name":"Hubert Dulay"}]}},{"title":"Real-time Analytics with Presto and Apache Pinot","date":"2021-02-02T00:00:00.000Z","tags":["Pinot","Presto","Trino","PrestoSQL","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.31,"time":18600,"words":62},"slug":"2021/02/02/DevBlog-PrestoPinot","customSlug":"2021/02/02/DevBlog-PrestoPinot","path":"blog/2021/02/02/DevBlog-PrestoPinot","customPath":"blog/2021/02/02/DevBlog-PrestoPinot","filePath":"blog/2021-02-02-DevBlog-PrestoPinot.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Real-time Analytics with Presto and Apache Pinot","datePublished":"2021-02-02T00:00:00.000Z","dateModified":"2021-02-02T00:00:00.000Z","description":"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-02-02-DevBlog-PrestoPinot"}},{"title":"Change Data Analysis with Debezium and Apache Pinot","date":"2021-01-08T00:00:00.000Z","tags":["Pinot","DevBlog","Debezium","CDC","Change Data Analysis","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Pinot enters into a storied legacy of innovations that have emerged from one of the world’s largest online social networks. Over a few decades, the Silicon Valley tech giant has helped hundreds of millions of people around the world navigate their careers.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.21,"time":12600,"words":42},"slug":"2021/01/08/DevBlog-DebeziumCDC","customSlug":"2021/01/08/DevBlog-DebeziumCDC","path":"blog/2021/01/08/DevBlog-DebeziumCDC","customPath":"blog/2021/01/08/DevBlog-DebeziumCDC","filePath":"blog/2021-01-08-DevBlog-DebeziumCDC.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Change Data Analysis with Debezium and Apache Pinot","datePublished":"2021-01-08T00:00:00.000Z","dateModified":"2021-01-08T00:00:00.000Z","description":"Pinot enters into a storied legacy of innovations that have emerged from one of the world’s largest online social networks. Over a few decades, the Silicon Valley tech giant has helped hundreds of millions of people around the world navigate their careers.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2021-01-08-DevBlog-DebeziumCDC"}},{"title":"From Lambda to Lambda-less Lessons learned","date":"2020-12-01T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"The Lambda architecture has become a popular architectural style that promises both speed and accuracy in data processing by using a hybrid approach of both batch processing and stream processing methods.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.205,"time":12300,"words":41},"slug":"2020/12/01/LinkedIn-Lamda","customSlug":"2020/12/01/LinkedIn-Lamda","path":"blog/2020/12/01/LinkedIn-Lamda","customPath":"blog/2020/12/01/LinkedIn-Lamda","filePath":"blog/2020-12-01-LinkedIn-Lamda.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"From Lambda to Lambda-less Lessons learned","datePublished":"2020-12-01T00:00:00.000Z","dateModified":"2020-12-01T00:00:00.000Z","description":"The Lambda architecture has become a popular architectural style that promises both speed and accuracy in data processing by using a hybrid approach of both batch processing and stream processing methods.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-12-01-LinkedIn-Lamda"}},{"title":"Operating Apache Pinot at Uber Scale","date":"2020-10-20T00:00:00.000Z","tags":["Pinot","Uber","real-time data platform","Realtime","Analytics","User-Facing Analytics","financial intelligence"],"summary":"Present details of this platform and how it fits in Uber’s ecosystem. Explain how uber scaled from a few use cases to a multi-cluster powering hundreds of use cases for querying terabyte-scale data with millisecond latencies.","authors":["uber"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.435,"time":26100,"words":87},"slug":"2020/10/20/Uber-Operating","customSlug":"2020/10/20/Uber-Operating","path":"blog/2020/10/20/Uber-Operating","customPath":"blog/2020/10/20/Uber-Operating","filePath":"blog/2020-10-20-Uber-Operating.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Operating Apache Pinot at Uber Scale","datePublished":"2020-10-20T00:00:00.000Z","dateModified":"2020-10-20T00:00:00.000Z","description":"Present details of this platform and how it fits in Uber’s ecosystem. Explain how uber scaled from a few use cases to a multi-cluster powering hundreds of use cases for querying terabyte-scale data with millisecond latencies.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-10-20-Uber-Operating","author":[{"@type":"Person","name":"Uber Data Team"}]}},{"title":"Deep Analysis of Russian Twitter Trolls","date":"2020-10-16T00:00:00.000Z","tags":["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.41,"time":24600,"words":82},"slug":"2020/10/16/DevBlog-TwitterTrollAnalysis","customSlug":"2020/10/16/DevBlog-TwitterTrollAnalysis","path":"blog/2020/10/16/DevBlog-TwitterTrollAnalysis","customPath":"blog/2020/10/16/DevBlog-TwitterTrollAnalysis","filePath":"blog/2020-10-16-DevBlog-TwitterTrollAnalysis.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Deep Analysis of Russian Twitter Trolls","datePublished":"2020-10-16T00:00:00.000Z","dateModified":"2020-10-16T00:00:00.000Z","description":"Show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-10-16-DevBlog-TwitterTrollAnalysis"}},{"title":"Leverage Plugins to Ingest Parquet Files from S3 in Pinot","date":"2020-08-08T00:00:00.000Z","tags":["Pinot","SLA","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Pinot is its pluggable architecture. The plugins make it easy to add support for any third-party system which can be an execution framework, a filesystem, or input format.","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.415,"time":24900,"words":83},"slug":"2020/08/08/DevBlog-IngestPlugins","customSlug":"2020/08/08/DevBlog-IngestPlugins","path":"blog/2020/08/08/DevBlog-IngestPlugins","customPath":"blog/2020/08/08/DevBlog-IngestPlugins","filePath":"blog/2020-08-08-DevBlog-IngestPlugins.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Leverage Plugins to Ingest Parquet Files from S3 in Pinot","datePublished":"2020-08-08T00:00:00.000Z","dateModified":"2020-08-08T00:00:00.000Z","description":"Pinot is its pluggable architecture. The plugins make it easy to add support for any third-party system which can be an execution framework, a filesystem, or input format.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-08-08-DevBlog-IngestPlugins"}},{"title":"Monitoring Apache Pinot with JMX, Prometheus and Grafana","date":"2020-08-08T00:00:00.000Z","tags":["Pinot","Monitoring","JMX","Prometheus","Grafana","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.275,"time":16500,"words":55},"slug":"2020/08/08/DevBlog-PinotMonitoring","customSlug":"2020/08/08/DevBlog-PinotMonitoring","path":"blog/2020/08/08/DevBlog-PinotMonitoring","customPath":"blog/2020/08/08/DevBlog-PinotMonitoring","filePath":"blog/2020-08-08-DevBlog-PinotMonitoring.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Monitoring Apache Pinot with JMX, Prometheus and Grafana","datePublished":"2020-08-08T00:00:00.000Z","dateModified":"2020-08-08T00:00:00.000Z","description":"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-08-08-DevBlog-PinotMonitoring"}},{"title":"Achieving 99th percentile latency SLA using Apache Pinot","date":"2020-08-08T00:00:00.000Z","tags":["Pinot","SLA","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"How users can build critical site-facing analytical applications requiring high throughput and strict p99th query latency SLA","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.19,"time":11400,"words":38},"slug":"2020/08/08/DevBlog-SLAApps","customSlug":"2020/08/08/DevBlog-SLAApps","path":"blog/2020/08/08/DevBlog-SLAApps","customPath":"blog/2020/08/08/DevBlog-SLAApps","filePath":"blog/2020-08-08-DevBlog-SLAApps.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Achieving 99th percentile latency SLA using Apache Pinot","datePublished":"2020-08-08T00:00:00.000Z","dateModified":"2020-08-08T00:00:00.000Z","description":"How users can build critical site-facing analytical applications requiring high throughput and strict p99th query latency SLA","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-08-08-DevBlog-SLAApps","author":[{"@type":"Person","name":"Pinot Dev"}]}},{"title":"Utilize UDFs to Supercharge Queries in Apache Pinot","date":"2020-08-08T00:00:00.000Z","tags":["Pinot","SLA","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Scalar Functions that allow users to write and add their functions as a plugin.","authors":["pinotdev"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.51,"time":30600,"words":102},"slug":"2020/08/08/DevBlog-ScalarUDFs","customSlug":"2020/08/08/DevBlog-ScalarUDFs","path":"blog/2020/08/08/DevBlog-ScalarUDFs","customPath":"blog/2020/08/08/DevBlog-ScalarUDFs","filePath":"blog/2020-08-08-DevBlog-ScalarUDFs.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Utilize UDFs to Supercharge Queries in Apache Pinot","datePublished":"2020-08-08T00:00:00.000Z","dateModified":"2020-08-08T00:00:00.000Z","description":"Scalar Functions that allow users to write and add their functions as a plugin.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-08-08-DevBlog-ScalarUDFs"}},{"title":"Building a culture around metrics and anomaly detection","date":"2020-07-28T00:00:00.000Z","tags":["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"ThirdEye as a system is a platform that allows you to integrate your metrics (quantitative information) with events (knowledge or qualitative information) and combine the two so you can distinguish between meaningless anomalies and those ones that matter.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.475,"time":28500,"words":95},"slug":"2020/07/28/DevBlog-AnomalyDetection","customSlug":"2020/07/28/DevBlog-AnomalyDetection","path":"blog/2020/07/28/DevBlog-AnomalyDetection","customPath":"blog/2020/07/28/DevBlog-AnomalyDetection","filePath":"blog/2020-07-28-DevBlog-AnomalyDetection.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Building a culture around metrics and anomaly detection","datePublished":"2020-07-28T00:00:00.000Z","dateModified":"2020-07-28T00:00:00.000Z","description":"ThirdEye as a system is a platform that allows you to integrate your metrics (quantitative information) with events (knowledge or qualitative information) and combine the two so you can distinguish between meaningless anomalies and those ones that matter.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-07-28-DevBlog-AnomalyDetection"}},{"title":"Moving developers up the stack with Apache Pinot","date":"2020-07-28T00:00:00.000Z","tags":["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Pinot enters into a storied legacy of innovations that have emerged from one of the world’s largest online social networks. Over a few decades, the Silicon Valley tech giant has helped hundreds of millions of people around the world navigate their careers.","authors":["bastani"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.425,"time":25500,"words":85},"slug":"2020/07/28/DevBlog-DevUpStack","customSlug":"2020/07/28/DevBlog-DevUpStack","path":"blog/2020/07/28/DevBlog-DevUpStack","customPath":"blog/2020/07/28/DevBlog-DevUpStack","filePath":"blog/2020-07-28-DevBlog-DevUpStack.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Moving developers up the stack with Apache Pinot","datePublished":"2020-07-28T00:00:00.000Z","dateModified":"2020-07-28T00:00:00.000Z","description":"Pinot enters into a storied legacy of innovations that have emerged from one of the world’s largest online social networks. Over a few decades, the Silicon Valley tech giant has helped hundreds of millions of people around the world navigate their careers.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-07-28-DevBlog-DevUpStack","author":[{"@type":"Person","name":"Hubert Dulay"}]}},{"title":"Bridging batch and stream processing for the Recruiter usage statistics dashboard","date":"2020-07-14T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.205,"time":12300,"words":41},"slug":"2020/07/14/LinkedIn-BatchRealtime","customSlug":"2020/07/14/LinkedIn-BatchRealtime","path":"blog/2020/07/14/LinkedIn-BatchRealtime","customPath":"blog/2020/07/14/LinkedIn-BatchRealtime","filePath":"blog/2020-07-14-LinkedIn-BatchRealtime.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Bridging batch and stream processing for the Recruiter usage statistics dashboard","datePublished":"2020-07-14T00:00:00.000Z","dateModified":"2020-07-14T00:00:00.000Z","description":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-07-14-LinkedIn-BatchRealtime","author":[{"@type":"Person","name":"LinkedIn Engineering Team"}]}},{"title":"Building LinkedIn Talent Insights to democratize data-driven decision making","date":"2020-06-29T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.185,"time":11100,"words":37},"slug":"2020/06/29/LinkedIn-TalentInsight","customSlug":"2020/06/29/LinkedIn-TalentInsight","path":"blog/2020/06/29/LinkedIn-TalentInsight","customPath":"blog/2020/06/29/LinkedIn-TalentInsight","filePath":"blog/2020-06-29-LinkedIn-TalentInsight.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Building LinkedIn Talent Insights to democratize data-driven decision making","datePublished":"2020-06-29T00:00:00.000Z","dateModified":"2020-06-29T00:00:00.000Z","description":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-06-29-LinkedIn-TalentInsight"}},{"title":"Monitoring business performance data with ThirdEye smart alerts","date":"2020-06-25T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.22,"time":13200,"words":44},"slug":"2020/06/25/LinkedIn-SmartAlerts","customSlug":"2020/06/25/LinkedIn-SmartAlerts","path":"blog/2020/06/25/LinkedIn-SmartAlerts","customPath":"blog/2020/06/25/LinkedIn-SmartAlerts","filePath":"blog/2020-06-25-LinkedIn-SmartAlerts.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Monitoring business performance data with ThirdEye smart alerts","datePublished":"2020-06-25T00:00:00.000Z","dateModified":"2020-06-25T00:00:00.000Z","description":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-06-25-LinkedIn-SmartAlerts"}},{"title":"Analyzing anomalies with ThirdEye","date":"2020-02-20T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.175,"time":10500,"words":35},"slug":"2020/02/20/LinkedIn-Thirdeye","customSlug":"2020/02/20/LinkedIn-Thirdeye","path":"blog/2020/02/20/LinkedIn-Thirdeye","customPath":"blog/2020/02/20/LinkedIn-Thirdeye","filePath":"blog/2020-02-20-LinkedIn-Thirdeye.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Analyzing anomalies with ThirdEye","datePublished":"2020-02-20T00:00:00.000Z","dateModified":"2020-02-20T00:00:00.000Z","description":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-02-20-LinkedIn-Thirdeye"}},{"title":"Engineering SQL Support on Apache Pinot at Uber","date":"2020-01-15T00:00:00.000Z","tags":["Pinot","Uber","real-time data platform","Realtime","Analytics","User-Facing Analytics","Presto","SQL"],"summary":"Talks about solution that linked Presto, a query engine that supports full ANSI SQL, and Pinot, a real-time OLAP (online analytical processing) datastore.","authors":["uber"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.42,"time":25200,"words":84},"slug":"2020/01/15/Pinot-Presto-SQL","customSlug":"2020/01/15/Pinot-Presto-SQL","path":"blog/2020/01/15/Pinot-Presto-SQL","customPath":"blog/2020/01/15/Pinot-Presto-SQL","filePath":"blog/2020-01-15-Pinot-Presto-SQL.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Engineering SQL Support on Apache Pinot at Uber","datePublished":"2020-01-15T00:00:00.000Z","dateModified":"2020-01-15T00:00:00.000Z","description":"Talks about solution that linked Presto, a query engine that supports full ANSI SQL, and Pinot, a real-time OLAP (online analytical processing) datastore.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2020-01-15-Pinot-Presto-SQL"}},{"title":"Auto-tuning Pinot real-time consumption","date":"2019-07-11T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.24,"time":14400,"words":48},"slug":"2019/07/11/LinkedIn-AutoTune","customSlug":"2019/07/11/LinkedIn-AutoTune","path":"blog/2019/07/11/LinkedIn-AutoTune","customPath":"blog/2019/07/11/LinkedIn-AutoTune","filePath":"blog/2019-07-11-LinkedIn-AutoTune.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Auto-tuning Pinot real-time consumption","datePublished":"2019-07-11T00:00:00.000Z","dateModified":"2019-07-11T00:00:00.000Z","description":"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2019-07-11-LinkedIn-AutoTune","author":[{"@type":"Person","name":"LinkedIn Engineering Team"}]}},{"title":"Star-tree index - Powering fast aggregations on Pinot","date":"2019-06-14T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"Introduced Star-Tree index to utilize the pre-aggregated documents in a smart way that achieves low query latencies, while using the storage space efficiently.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.175,"time":10500,"words":35},"slug":"2019/06/14/LinkedIn-StarTree","customSlug":"2019/06/14/LinkedIn-StarTree","path":"blog/2019/06/14/LinkedIn-StarTree","customPath":"blog/2019/06/14/LinkedIn-StarTree","filePath":"blog/2019-06-14-LinkedIn-StarTree.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Star-tree index - Powering fast aggregations on Pinot","datePublished":"2019-06-14T00:00:00.000Z","dateModified":"2019-06-14T00:00:00.000Z","description":"Introduced Star-Tree index to utilize the pre-aggregated documents in a smart way that achieves low query latencies, while using the storage space efficiently.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2019-06-14-LinkedIn-StarTree"}},{"title":"Introducing ThirdEye - LinkedIn’s Business-Wide Monitoring Platform","date":"2019-01-09T00:00:00.000Z","tags":["Pinot","LinkedIn","real-time data platform","Realtime","ThirdEye","Analytics","User-Facing Analytics"],"summary":"ThirdEye is a comprehensive platform for real-time monitoring of metrics that covers a wide variety of use-cases.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.28,"time":16800,"words":56},"slug":"2019/01/09/LinkedIn-IntroThirdEye","customSlug":"2019/01/09/LinkedIn-IntroThirdEye","path":"blog/2019/01/09/LinkedIn-IntroThirdEye","customPath":"blog/2019/01/09/LinkedIn-IntroThirdEye","filePath":"blog/2019-01-09-LinkedIn-IntroThirdEye.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Introducing ThirdEye - LinkedIn’s Business-Wide Monitoring Platform","datePublished":"2019-01-09T00:00:00.000Z","dateModified":"2019-01-09T00:00:00.000Z","description":"ThirdEye is a comprehensive platform for real-time monitoring of metrics that covers a wide variety of use-cases.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2019-01-09-LinkedIn-IntroThirdEye"}},{"title":"Engineering Restaurant Manager - UberEATS Analytics Dashboard","date":"2017-09-17T00:00:00.000Z","tags":["Pinot","Uber Data","real-time data platform","Realtime","Analytics","User-Facing Analytics","financial intelligence"],"summary":"Restaurant Manager is a comprehensive analytics dashboard and pipeline for our restaurant partners. In this article, we discuss how we architected this analytics platform and its robust data pipeline.","authors":["uber"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.35,"time":21000,"words":70},"slug":"2017/09/17/Restaurant-Manager","customSlug":"2017/09/17/Restaurant-Manager","path":"blog/2017/09/17/Restaurant-Manager","customPath":"blog/2017/09/17/Restaurant-Manager","filePath":"blog/2017-09-17-Restaurant-Manager.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Engineering Restaurant Manager - UberEATS Analytics Dashboard","datePublished":"2017-09-17T00:00:00.000Z","dateModified":"2017-09-17T00:00:00.000Z","description":"Restaurant Manager is a comprehensive analytics dashboard and pipeline for our restaurant partners. In this article, we discuss how we architected this analytics platform and its robust data pipeline.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2017-09-17-Restaurant-Manager"}},{"title":"Open Sourcing Pinot - Scaling the Wall of Real-Time Analytics","date":"2015-06-10T00:00:00.000Z","tags":["Pinot","A/B Testing","Infrastructure","Analytics","User-Facing Analytics"],"summary":"Introducing Pinot which allow to slice and dice across billions of rows in real-time across a wide variety of products","authors":["Kishore Gopalakrishna"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.15,"time":9000,"words":30},"slug":"2015/06/10/Open-Sourcing-Pinot","customSlug":"2015/06/10/Open-Sourcing-Pinot","path":"blog/2015/06/10/Open-Sourcing-Pinot","customPath":"blog/2015/06/10/Open-Sourcing-Pinot","filePath":"blog/2015-06-10-Open-Sourcing-Pinot.mdx","toc":[],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"Open Sourcing Pinot - Scaling the Wall of Real-Time Analytics","datePublished":"2015-06-10T00:00:00.000Z","dateModified":"2015-06-10T00:00:00.000Z","description":"Introducing Pinot which allow to slice and dice across billions of rows in real-time across a wide variety of products","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2015-06-10-Open-Sourcing-Pinot"}},{"title":"A Brief History of Scaling LinkedIn","date":"2015-05-16T00:00:00.000Z","tags":["Pinot","LinkedIn","Data Scaling","real-time data platform","Realtime","Analytics","User-Facing Analytics"],"summary":"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn’s product portfolio, member base, and server load has grown tremendously.","authors":["linkedin"],"type":"Blog","readingTime":{"text":"1 min read","minutes":0.58,"time":34800,"words":116},"slug":"2015/05/16/LinkedIn-Scaling","customSlug":"2015/05/16/LinkedIn-Scaling","path":"blog/2015/05/16/LinkedIn-Scaling","customPath":"blog/2015/05/16/LinkedIn-Scaling","filePath":"blog/2015-05-16-LinkedIn-Scaling.mdx","toc":[{"value":"A Brief History of Scaling LinkedIn","url":"#a-brief-history-of-scaling-linkedin","depth":2}],"structuredData":{"@context":"https://schema.org","@type":"BlogPosting","headline":"A Brief History of Scaling LinkedIn","datePublished":"2015-05-16T00:00:00.000Z","dateModified":"2015-05-16T00:00:00.000Z","description":"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn’s product portfolio, member base, and server load has grown tremendously.","image":"/static/images/twitter-card.png","url":"https://pinot.apache.org/blog/2015-05-16-LinkedIn-Scaling","author":[{"@type":"Person","name":"LinkedIn Engineering Team"}]}}],"initialDisplayPosts":["$e","$1b","$27","$34","$3d"],"pagination":{"currentPage":3,"totalPages":10},"title":"All Posts"}],null],"childPropSegment":"__PAGE__?{\"page\":\"3\"}","styles":null}],"childPropSegment":["page","3","d"],"styles":null}],"childPropSegment":"page","styles":null}],"childPropSegment":"blog","styles":null}]}],["$","footer",null,{"className":"border-t bg-sky-100 px-5 py-10 md:px-[6.75rem] md:pb-10 md:pt-16","children":[["$","div",null,{"className":"mx-auto flex max-w-7xl flex-wrap justify-between","children":[["$","div",null,{"className":"flex-shrink-0","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":120,"height":48,"fill":"none","children":[["$","g",null,{"fill":"#C7154A","clipPath":"url(#logo_svg__a)","children":[["$","path",null,{"d":"$4a"}],["$","path",null,{"d":"M13.5 23a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5M8 5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M12 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16 2a1 1 0 1 0 0-2 1 1 0 0 0 0 2"}]]}],["$","defs",null,{"children":["$","clipPath",null,{"id":"logo_svg__a","children":["$","path",null,{"fill":"#fff","d":"M0 0h120v48H0z"}]}]}]]}]}],["$","div",null,{"className":"flex flex-wrap gap-x-16 gap-y-5 py-8 md:pl-24 md:pr-[21.625rem]","children":[" ",[["$","div","Resources",{"children":[["$","h5",null,{"className":"mb-4 text-lg font-semibold","children":"Resources"}],["$","div",null,{"className":"flex justify-between gap-x-10","children":[["$","div",null,{"className":"flex flex-col","children":[["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://docs.pinot.apache.org/","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Docs"}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://docs.pinot.apache.org/getting-started","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Getting Started"}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://docs.pinot.apache.org/integrations/thirdeye","className":"block py-1 text-gray-600 hover:text-gray-900","children":"ThirdEye"}]]}],["$","div",null,{"className":"flex flex-col","children":[["$","$Lb",null,{"href":"/powered-by","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Company Stories"}],["$","$Lb",null,{"href":"/download","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Download"}],["$","$Lb",null,{"href":"/blog","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Blog"}]]}]]}]]}],["$","div","Apache",{"children":[["$","h5",null,{"className":"mb-4 text-lg font-semibold","children":"Apache"}],["$","div",null,{"className":"flex justify-between gap-x-10","children":[["$","div",null,{"className":"flex flex-col","children":[["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://www.apache.org","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Foundation"}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://www.apache.org/licenses","className":"block py-1 text-gray-600 hover:text-gray-900","children":"License"}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://www.apache.org/security","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Security"}]]}],["$","div",null,{"className":"flex flex-col","children":[["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://www.apache.org/foundation/sponsorship.html","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Sponsorship"}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://www.apache.org/events/current-event","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Events"}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://www.apache.org/foundation/thanks.html","className":"block py-1 text-gray-600 hover:text-gray-900","children":"Thanks"}]]}]]}]]}]]]}],["$","div",null,{"className":"mt-4 flex justify-center md:mt-0","children":[["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://join.slack.com/t/apache-pinot/shared_invite/zt-5z7pav2f-yYtjZdVA~EDmrGkho87Vzw","className":"mr-4","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-slack fill-gray-900","children":[["$","rect","diqz80",{"width":"3","height":"8","x":"13","y":"2","rx":"1.5"}],["$","path","183iwg",{"d":"M19 8.5V10h1.5A1.5 1.5 0 1 0 19 8.5"}],["$","rect","hqg7r1",{"width":"3","height":"8","x":"8","y":"14","rx":"1.5"}],["$","path","76g71w",{"d":"M5 15.5V14H3.5A1.5 1.5 0 1 0 5 15.5"}],["$","rect","1kmz0a",{"width":"8","height":"3","x":"14","y":"13","rx":"1.5"}],["$","path","jc4sz0",{"d":"M15.5 19H14v1.5a1.5 1.5 0 1 0 1.5-1.5"}],["$","rect","1omvl4",{"width":"8","height":"3","x":"2","y":"8","rx":"1.5"}],["$","path","16f3cl",{"d":"M8.5 5H10V3.5A1.5 1.5 0 1 0 8.5 5"}],"$undefined"]}]}],["$","a",null,{"target":"_blank","rel":"noopener noreferrer","href":"https://github.com/apache/pinot","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"fill":"currentColor","size":24,"children":[["$","g",null,{"clipPath":"url(#github_svg__a)","children":["$","path",null,{"fillRule":"evenodd","d":"M12.01 0C5.369 0 0 5.5 0 12.304c0 5.44 3.44 10.043 8.212 11.673.597.122.815-.265.815-.59 0-.286-.02-1.264-.02-2.283-3.34.734-4.036-1.466-4.036-1.466-.537-1.426-1.332-1.793-1.332-1.793-1.094-.754.08-.754.08-.754 1.212.082 1.849 1.263 1.849 1.263 1.073 1.874 2.803 1.345 3.5 1.019.098-.795.417-1.345.755-1.65-2.665-.285-5.468-1.345-5.468-6.07 0-1.345.477-2.445 1.232-3.3-.119-.306-.537-1.57.12-3.26 0 0 1.014-.326 3.3 1.263.98-.27 1.989-.407 3.003-.408 1.014 0 2.048.143 3.002.408 2.287-1.59 3.301-1.263 3.301-1.263.657 1.69.239 2.954.12 3.26.775.855 1.232 1.955 1.232 3.3 0 4.725-2.803 5.764-5.488 6.07.438.387.815 1.12.815 2.281 0 1.65-.02 2.975-.02 3.382 0 .326.22.713.816.59C20.56 22.347 24 17.744 24 12.305 24.02 5.5 18.63 0 12.01 0","clipRule":"evenodd"}]}],["$","defs",null,{"children":["$","clipPath",null,{"id":"github_svg__a","children":["$","path",null,{"fill":"#fff","d":"M0 0h24v24H0z"}]}]}]]}]}]]}]]}],["$","div",null,{"className":"mt-8 border-t border-neutral-300 pt-4 text-left text-sm text-gray-600","children":["Copyright © ",2024," The Apache Software Foundation. Apache Pinot, Pinot, Apache, the Apache feather logo, and the Apache Pinot project logo are registered trademarks of The Apache Software Foundation. This page has references to third party software - Presto, PrestoDB, ThirdEye, Trino, TrinoDB, that are not part of the Apache Software Foundation and are not covered under the Apache License."]}]]}]]}]}]]}]}]]}],null] 4:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Posts | Apache Pinot™"}],["$","meta","3",{"name":"description","content":"Realtime distributed OLAP datastore"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","meta","5",{"name":"googlebot","content":"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"}],["$","link","6",{"rel":"canonical","href":"https://pinot.apache.org/blog/page/3"}],["$","link","7",{"rel":"alternate","type":"application/rss+xml","href":"https://pinot.apache.org/feed.xml"}],["$","meta","8",{"property":"og:title","content":"Posts | Apache Pinot™"}],["$","meta","9",{"property":"og:description","content":"All posts"}],["$","meta","10",{"property":"og:url","content":"https://pinot.apache.org/blog/page/3"}],["$","meta","11",{"property":"og:site_name","content":"Apache Pinot™"}],["$","meta","12",{"property":"og:locale","content":"en_US"}],["$","meta","13",{"property":"og:image","content":"https://pinot.apache.org/static/images/twitter-card.png"}],["$","meta","14",{"property":"og:type","content":"website"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Posts | Apache Pinot™"}],["$","meta","17",{"name":"twitter:description","content":"Realtime distributed OLAP datastore"}],["$","meta","18",{"name":"twitter:image","content":"https://pinot.apache.org/static/images/twitter-card.png"}],["$","meta","19",{"name":"next-size-adjust"}]] c:null