This submit was co-written with Dipankar Mazumdar, Workers Information Engineering Advocate with AWS Accomplice OneHouse.
Information structure has advanced considerably to deal with rising information volumes and various workloads. Initially, information warehouses had been the go-to resolution for structured information and analytical workloads however had been restricted by proprietary storage codecs and their lack of ability to deal with unstructured information. This led to the rise of knowledge lakes primarily based on columnar codecs like Apache Parquet, which got here with completely different challenges like the shortage of ACID capabilities.
Finally, transactional information lakes emerged so as to add transactional consistency and efficiency of a knowledge warehouse to the information lake. Central to a transactional information lake are open desk codecs (OTFs) akin to Apache Hudi, Apache Iceberg, and Delta Lake, which act as a metadata layer over columnar codecs. These codecs present important options like schema evolution, partitioning, ACID transactions, and time-travel capabilities, that handle conventional issues in information lakes.
In apply, OTFs are utilized in a broad vary of analytical workloads, from enterprise intelligence to machine studying. Furthermore, they are often mixed to profit from particular person strengths. As an example, a streaming information pipeline can write tables utilizing Hudi due to its power in low-latency, write-heavy workloads. In later pipeline phases, information is transformed to Iceberg, to profit from its learn efficiency. Historically, this conversion required time-consuming rewrites of knowledge recordsdata, leading to information duplication, larger storage, and elevated compute prices. In response, the business is shifting towards interoperability between OTFs, with instruments that enable conversions with out information duplication. Apache XTable (incubating), an rising open supply venture, facilitates seamless conversions between OTFs, eliminating most of the challenges related to desk format conversion.
On this submit, we discover how Apache XTable, mixed with the AWS Glue Information Catalog, allows background conversions between OTFs residing on Amazon Easy Storage Service (Amazon S3) primarily based information lakes, with minimal to no modifications to current pipelines in a scalable and cost-effective approach, as proven within the following diagram.
This submit is one in all a number of posts about XTable on AWS. For extra examples and references to different posts, consult with the next GitHub repository.
Apache XTable
Apache XTable (incubating) is an open supply venture designed to allow interoperability amongst numerous information lake desk codecs, permitting omnidirectional conversions between codecs with out the necessity to copy or rewrite information. Initially open sourced in November 2023 beneath the identify OneTable, with contributions from amongst others OneHouse, it was licensed beneath Apache 2.0. In March 2024, the venture was donated to the Apache Software program Basis (ASF) and rebranded as Apache XTable, the place it’s now incubating. XTable isn’t a brand new desk format however offers abstractions and instruments to translate the metadata related to current codecs. The first goal of XTable is to permit customers to start out with any desk format and have the pliability to change to a different as wanted.
Interior workings and options
At a basic stage, Hudi, Iceberg, and Delta Lake share similarities of their construction. When information is written to a distributed file system, these codecs include a knowledge layer, sometimes Parquet recordsdata, and a metadata layer that gives the mandatory abstraction (see the next diagram). XTable makes use of these commonalities to allow interoperability between codecs.

The synchronization course of in XTable works by translating desk metadata utilizing the prevailing APIs of those desk codecs. It reads the present metadata from the supply desk and generates the corresponding metadata for a number of goal codecs. This metadata is then saved in a delegated listing inside the base path of your desk, akin to _delta_log for Delta Lake, metadata for Iceberg, and .hoodie for Hudi. This permits the prevailing information to be interpreted as if it had been initially written in any of those codecs.
XTable offers two metadata translation strategies: Full Sync, which interprets all commits, and Incremental Sync, which solely interprets new, unsynced commits for better effectivity with giant tables. If points come up with Incremental Sync, XTable robotically falls again to Full Sync to offer uninterrupted translation.
Group and future
By way of future plans, XTable is concentrated on reaching characteristic parity with OTFs’ built-in options, together with including crucial capabilities like help for Merge-on-Learn (MoR) tables. The venture additionally plans to facilitate synchronization of desk codecs throughout a number of catalogs, akin to AWS Glue, Hive, and Unity catalog.
Run XTable as a steady background conversion mechanism
On this submit, we describe a background conversion mechanism for OTFs that doesn’t require modifications to information pipelines. The mechanism periodically scans a knowledge catalog just like the AWS Glue Information Catalog for tables to transform with XTable.
On a knowledge platform, a knowledge catalog shops desk metadata and sometimes comprises the information mannequin and bodily storage location of the datasets. It serves because the central integration with analytical providers. To maximise ease of use, compatibility, and scalability on AWS, the conversion mechanism described on this submit is constructed across the AWS Glue Information Catalog.
The next diagram illustrates the answer at a look. We design this conversion mechanism primarily based on Lambda, AWS Glue, and XTable.

To ensure that the Lambda perform to have the ability to detect the tables contained in the Information Catalog, the next data must be related to a desk: supply format and goal codecs. For every detected desk, the Lambda perform invokes the XTable utility, which is packaged into the features setting. Then XTable interprets between supply and goal codecs and writes the brand new metadata on the identical information retailer.
Resolution overview
We implement the answer with the AWS Cloud Growth Equipment (AWS CDK), an open supply software program growth framework for outlining cloud infrastructure in code, and supply it on GitHub. The AWS CDK resolution deploys the next elements:
- A converter Lambda perform that comprises the XTable utility and begins the conversion job for the detected tables
- A detector Lambda perform that scans the Information Catalog for tables which can be to be transformed and invokes the converter Lambda perform
- An Amazon EventBridge schedule that invokes the detector Lambda perform on an hourly foundation
At the moment, the XTable utility must be constructed from supply. We due to this fact present a Dockerfile that implements the required construct steps and use the ensuing Docker picture because the Lambda perform runtime setting.
In case you don’t have pattern information obtainable for testing, we offer scripts for producing pattern datasets on GitHub. Information and metadata are proven in blue within the following element diagram.

Converter Lambda perform: Run XTable
The converter Lambda perform invokes the XTable JAR, wrapped with the third-party library jpype, and converts the metadata layer of the respective information lake tables.
The perform is outlined within the AWS CDK by way of the DockerImageFunction, which makes use of a Dockerfile and builds a Docker container as a part of the deploy step. With this mechanism, we are able to bundle the XTable utility inside our Lambda perform.
First, we obtain the XTtable GitHub repository and construct the jar with the maven CLI. That is completed as part of the Docker container construct course of:
To robotically construct and add the Docker picture, we create a DockerImageFunction within the AWS CDK and reference the Dockerfile in its definition. To efficiently run Spark and due to this fact XTable in a Lambda perform, we have to set the LOCAL_IP variable of Spark to localhost and due to this fact to 127.0.0.1:
To name the XTtable JAR, we use a third-party Python library known as jpype, which handles the communication with the Java digital machine. In our Python code, the XTtable name is as follows:
For extra data on XTable utility parameters, see Creating your first interoperable desk.
Detector Lambda perform: Establish tables to transform within the Information Catalog
The detector Lambda perform scans the tables within the Information Catalog. For a desk that can be transformed, it invokes the converter Lambda perform by way of an occasion. This decouples the scanning and conversion elements and makes our resolution extra resilient to potential failures.
The detection mechanism searches within the desk parameters for the parameters xtable_table_type and xtable_target_formats. In the event that they exist, the conversion is invoked. See the next code:
EventBridge Scheduler rule
Within the AWS CDK, you outline an EventBridge Scheduler rule as follows. Based mostly on the rule, EventBridge will then name the Lambda detector perform each hour:
Stipulations
Let’s dive deeper into the way to deploy the offered AWS CDK stack. You want one of many following container runtimes:
- Finch (an open supply shopper for container growth)
- Docker
You additionally want the AWS CDK configured. For extra particulars, see Getting began with the AWS CDK.
Construct and deploy the answer
Full the next steps:
- To deploy the stack, clone the GitHub repo, develop into the folder for this submit (
xtable_lambda), and deploy the AWS CDK stack:
This deploys the described Lambda features and the EventBridge Scheduler rule.
- When utilizing Finch, you have to set the
CDK_DOCKERsetting variable earlier than deployment:
After profitable deployment, the conversion mechanism begins to run each hour.
- The next parameters must exist on the AWS Glue desk that can be transformed:
"xtable_table_type": "" "xtable_target_formats": ", "
On the AWS Glue console, the parameters seem like the next screenshot and will be set beneath Desk properties when enhancing an AWS Glue desk.

- Optionally, should you don’t have pattern information, the next scripts may help you arrange a check setting both along with your native machine or in an AWS Glue for Spark job:
Convert a streaming desk (Hudi to Iceberg)
Let’s assume we have now a Hudi desk on Amazon S3, which is registered within the Information Catalog, and wish to periodically translate it to Iceberg format. Information is streaming in constantly. Now we have deployed the offered AWS CDK stack and set the required AWS Glue desk properties to translate the dataset to the Iceberg format. Within the following steps, we run the background job, see the ends in AWS Glue and Amazon S3, and question it with Amazon Athena, a serverless and interactive analytics service that gives a simplified and versatile technique to analyze petabytes of knowledge.
In Amazon S3 and AWS Glue, we are able to see our Hudi dataset and desk together with the metadata folder .hoodie. On the AWS Glue console, we set the next desk properties:
"xtable_target_type": "HUDI""xtable_table_formats": "ICEBERG"
![]() |
![]() |
Our Lambda perform is invoked periodically each hour. After the run, we are able to discover the Iceberg-specific metadata folder in our S3 bucket, which was generated by XTable.
![]() |
![]() |
If we have a look at the Information Catalog, we are able to see the brand new desk was registered as an Iceberg desk.

With the Iceberg format, we are able to now make the most of the time journey characteristic by querying the dataset with a downstream analytical service like Athena. Within the following screenshot, you’ll be able to see at Title: that the desk is in Iceberg format.

Querying all snapshots, we are able to see that we created three snapshots with overwrites after the preliminary one.

We then take the present time and question the dataset illustration of 180 minutes in the past, ensuing within the information from the primary snapshot dedicated.

Abstract
On this submit, we demonstrated the way to construct a background conversion job for OTFs, utilizing XTable and the Information Catalog, which is unbiased from information pipelines and transformation jobs. By Xtable, it permits for environment friendly translation between OTFs, as a result of information recordsdata are reused and solely the metadata layer is processed. The mixing with the Information Catalog offers extensive compatability with AWS analytical providers.
You possibly can reuse the Lambda primarily based XTable deployment in different options. As an example, you would use it in a reactive mechanism for close to real-time conversion of OTFs, which is invoked by Amazon S3 object occasions ensuing from modifications to OTF metadata.
For additional details about XTable, see the venture’s official web site. For extra examples and references to different posts on utilizing XTable on AWS, consult with the next GitHub repository.
In regards to the authors
Matthias Rudolph is a Options Architect at AWS, digitalizing the German manufacturing business, specializing in analytics and large information. Earlier than that he was a lead developer on the German producer KraussMaffei Applied sciences, liable for the event of knowledge platforms.
Dipankar Mazumdar is a Workers Information Engineer Advocate at Onehouse.ai, specializing in open-source tasks like Apache Hudi and XTable to assist engineering groups construct and scale sturdy analytics platforms, with prior contributions to crucial tasks akin to Apache Iceberg and Apache Arrow.
Stephen Stated is a Senior Options Architect and works with Retail/CPG prospects. His areas of curiosity are information platforms and cloud-native software program engineering.




