<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Matt Fuller</title>
    <description>The latest articles on DEV Community by Matt Fuller (@mattfuller).</description>
    <link>https://dev.to/mattfuller</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1105855%2F4fd4387f-188e-4d43-98f2-e7c74bc8435b.png</url>
      <title>DEV Community: Matt Fuller</title>
      <link>https://dev.to/mattfuller</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mattfuller"/>
    <language>en</language>
    <item>
      <title>Iceberg, Delta Lake, and Hudi, oh my!</title>
      <dc:creator>Matt Fuller</dc:creator>
      <pubDate>Thu, 22 Jun 2023 16:01:07 +0000</pubDate>
      <link>https://dev.to/starburstdata/well-well-well-how-the-open-tables-have-turned-58og</link>
      <guid>https://dev.to/starburstdata/well-well-well-how-the-open-tables-have-turned-58og</guid>
      <description>&lt;p&gt;The rising popularity of the data lakehouse has led many to try to compare the merits of the open table formats underpinning this architecture: Apache Iceberg, Delta Lake, and Apache Hudi. If you look between the lines, the conversation is mostly driven by hype, making it hard to parse reality from marketing jargon. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xd_WKmR5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yfn6cougos205mk8uyqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xd_WKmR5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yfn6cougos205mk8uyqo.png" alt='Office meme of "how the turn tables" quote' width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article isn’t going to solve that problem. Instead, the goal is to introduce you to a new way of thinking about table formats – as a use case-level choice rather than an organization-level decision. &lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing a table format
&lt;/h2&gt;

&lt;p&gt;When deciding between table formats, it’s important to understand the similarities and differences that may impact performance and scalability. &lt;/p&gt;

&lt;p&gt;For example, Iceberg is currently the only table format with partition evolution support. This allows the partitioning scheme of a table to be changed without requiring a rewrite of the table, and it enables queries to be optimized by all partition schemes.&lt;/p&gt;

&lt;p&gt;On the other hand, Iceberg’s streaming support is lagging behind Delta Lake and Hudi. So the question to pick a table format becomes – which is more important to your business? Partitioning or streaming?&lt;/p&gt;

&lt;p&gt;Now, any seasoned data engineer knows that it’s not that simple. You don’t just have a single type of data in your systems or a single way you’re looking to interact with that data. Instead, you’re dealing with streaming pipelines, batch jobs, ad hoc queries, and more – all at the same time. And you don’t get to control what is added to that mix in the future.&lt;/p&gt;

&lt;p&gt;All of these factors make the binary decision – partitioning or streaming, Iceberg or Delta Lake – almost impossible to get right at the organization-level. But most vendors require you to do just that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starburst’s approach
&lt;/h2&gt;

&lt;p&gt;With Starburst, everything is built with openness in mind. We designed Starburst Galaxy to be interoperable with nearly any data environment, including first-class support for all modern open table formats.  &lt;/p&gt;

&lt;p&gt;This means that you can use the table format that is right for each of your workloads and change it when new needs emerge. You don’t need to worry about limited support for external tables or being locked into an old table format when new ones come along (and it will).&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;We wanted to make it as easy as possible to write to and read from different table formats, so we built Great Lakes connectivity – an under-the-hood process that abstracts away the details of using different table formats and file types. &lt;/p&gt;

&lt;p&gt;This connectivity is built into Starburst Galaxy, and is available to all users that are working with the following data sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon S3&lt;/li&gt;
&lt;li&gt;Azure Data Lake Storage&lt;/li&gt;
&lt;li&gt;Google Cloud Storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To create a table with one of these formats, you simply provide a “type” in the table ddl. Here is a simple example of creating an Iceberg table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE customer(
name varchar,
address varchar,
WITH (type='iceberg');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it! An Iceberg table has been created.&lt;/p&gt;

&lt;p&gt;To read a table using Great Lakes connectivity, you simply issue a SQL select query against it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM customer; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again… that’s it! End users shouldn’t need to worry about file types or table formats, they just want to query their data.&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>datascience</category>
      <category>iceberg</category>
      <category>deltalake</category>
    </item>
    <item>
      <title>Inside Starburst's hackathon: Into the great wide open(AI)</title>
      <dc:creator>Matt Fuller</dc:creator>
      <pubDate>Wed, 21 Jun 2023 15:50:12 +0000</pubDate>
      <link>https://dev.to/starburstdata/inside-starbursts-hackathon-into-the-great-wide-openai-3nl8</link>
      <guid>https://dev.to/starburstdata/inside-starbursts-hackathon-into-the-great-wide-openai-3nl8</guid>
      <description>&lt;p&gt;Generative AI has been taking the tech world by storm lately. Indie developers to large enterprises are experimenting with its impact not only in day-to-day jobs but also in driving new feature innovations. &lt;/p&gt;

&lt;p&gt;Starburst is no different. We’re always looking for ways to improve our technology and make the lives of data engineers easier. The current buzz around OpenAI lined up perfectly with our yearly Hack-a-Trino, and our team came up with some pretty cool concepts. &lt;/p&gt;

&lt;p&gt;Check out the top three projects below and let us know which one is your favorite by voting on r/dataengineering. Who knows you might just see the winning concept become a reality.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project A: Automatic Data Classification (LLM-based tagging)&lt;/li&gt;
&lt;li&gt;Project B: Trino AI Functions&lt;/li&gt;
&lt;li&gt;Project C: No Code Querying with ChatGPT&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project A: Automatic Data Classification
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Built by Alex Breshears, Cody Zwiefelhofer, David Shea, Elvis Le&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/838350523" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt; Automatic Data Classification is a feature that analyzes and predicts the content of registered data sources based on a subset of the data itself. This project uses OpenAI’s LLM APIs to take samples of datasets and propose potential tags to data admins. &lt;/p&gt;

&lt;p&gt;Tags in Starburst Galaxy allows users to associate attributes with one or more catalogs, schemas, tables, views, or columns. Tags can be combined with attribute-based access control policies to ensure that each role has the appropriate access rights to perform actions on entities in the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why did we build it?&lt;/strong&gt; This model automatically identifies data structures within the data. As such, it takes less time for data admins to learn what kind of data has been ingested and appropriately mark that data – increasing productivity and accuracy of tags.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural Considerations:&lt;/strong&gt; A critical requirement for this feature is that the data itself must be analyzed - not just the metadata. There are many reasons for this but the most obvious is columns are rarely named as what they are. &lt;/p&gt;

&lt;h2&gt;
  
  
  Project B: Trino AI Functions
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Built by Karol Sobczak, Mainak Ghosh&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/838356293" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt; Trino AI Functions (aka LLMs in the context of complex aggregations) uses ChatGPT and Hugging Face to translate natural language text into complex aggregation logic that can be executed directly on the Trino engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why did we build it?&lt;/strong&gt; SQL is heavily used for data analysis and at the same time the democratization of ML means that customers now want to do more with Trino queries. Trino AI Functions will help customers write expressive queries that can do language translation, fraud detection, sentiment analysis and other NLP tasks. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural Considerations:&lt;/strong&gt; One powerful feature of LLMs is that you can ask models to provide you a structured answer from unstructured data like JSON documents. &lt;/p&gt;

&lt;h2&gt;
  
  
  Project C: No Code Querying with ChatGPT
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Built by Lukas Grubwieser and Rob Anderson&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/838352967" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt; No code querying with ChatGPT is a feature that would let Galaxy users write natural language queries against data sources connected to Starburst Galaxy. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why did we build it?&lt;/strong&gt; This would allow business analysts to ask questions of Galaxy without having to write complex SQL or understand the underlying data architecture. It brings Starburst one step closer to our vision of data democratization. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architectural Considerations:&lt;/strong&gt; This project requires a three-part architecture: a frontend, OpenAI engine (with backend server), and Starburst. The frontend takes the question and OpenAI translates it to SQL which is then processed by Starburst. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honorary Mention:&lt;/strong&gt; Accelerating Cyber Analytics with Aderas, Starburst, and ChatGPT&lt;/p&gt;

&lt;p&gt;While this next effort wasn’t part of our internal hackathon, we thought it was too cool not to share. Our partner Aderas built an POC of an insider threat investigation model using Starburst and ChatGPT for cyber security analytics. &lt;/p&gt;

&lt;p&gt;Check out the demo:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/gnLeAsnkWU4?start=1620"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Starburst’s Learnings on Gen AI
&lt;/h2&gt;

&lt;p&gt;While we built a lot of cool things during the hackathon, we also learned a lot. We documented a couple of our team’s key learnings below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s really shown us how quickly we can generate new features and ideas that traditionally were a lot harder for a business like ours to innovate on.&lt;/li&gt;
&lt;li&gt;LLM definitely won’t solve everything, but it’s a good starting point. &lt;/li&gt;
&lt;li&gt;It’s been fun to iterate on, but we’re also largely waiting for our model to become more correct (since we think correctness matters!) around the query generating. However, it’s exceptionally cool to see what the newer models are capable of, in terms of generating syntactically correct ANSI SQL.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>analytics</category>
      <category>development</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
