This put up was co-written with Dipankar Mazumdar, Workers Information Engineering Advocate with AWS Associate OneHouse.
Information structure has developed considerably to deal with rising information volumes and numerous workloads. Initially, information warehouses have been the go-to resolution for structured information and analytical workloads however have been restricted by proprietary storage codecs and their incapability to deal with unstructured information. This led to the rise of information lakes based mostly on columnar codecs like Apache Parquet, which got here with totally 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 info 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 deal with 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 learn from particular person strengths. As an example, a streaming information pipeline can write tables utilizing Hudi due to its energy in low-latency, write-heavy workloads. In later pipeline phases, information is transformed to Iceberg, to learn from its learn efficiency. Historically, this conversion required time-consuming rewrites of information recordsdata, leading to information duplication, greater storage, and elevated compute prices. In response, the trade is shifting towards interoperability between OTFs, with instruments that permit 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 put up, we discover how Apache XTable, mixed with the AWS Glue Information Catalog, permits background conversions between OTFs residing on Amazon Easy Storage Service (Amazon S3) based mostly information lakes, with minimal to no modifications to current pipelines in a scalable and cost-effective manner, as proven within the following diagram.

This put up is one in every of a number of posts about XTable on AWS. For extra examples and references to different posts, discuss 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 underneath the identify OneTable, with contributions from amongst others OneHouse, it was licensed underneath 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 flexibleness to change to a different as wanted.
Inside workings and options
At a elementary 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, usually Parquet recordsdata, and a metadata layer that gives the required 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 present 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 chosen listing inside the base path of your desk, akin to _delta_log for Delta Lake, metadata for Iceberg, and .hoodie for Hudi. This enables the present information to be interpreted as if it have 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 larger effectivity with massive tables. If points come up with Incremental Sync, XTable mechanically falls again to Full Sync to supply uninterrupted translation.
Group and future
When it comes to future plans, XTable is targeted on reaching characteristic parity with OTFs’ built-in options, together with including important capabilities like assist 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 put up, 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 usually accommodates the info 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 put up is constructed across the AWS Glue Information Catalog.
The next diagram illustrates the answer at a look. We design this conversion mechanism based mostly 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 surroundings. 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 Improvement 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 accommodates the XTable utility and begins the conversion job for the detected tables
- A detector Lambda perform that scans the Information Catalog for tables which are to be transformed and invokes the converter Lambda perform
- An Amazon EventBridge schedule that invokes the detector Lambda perform on an hourly foundation
At present, the XTable utility must be constructed from supply. We subsequently present a Dockerfile that implements the required construct steps and use the ensuing Docker picture because the Lambda perform runtime surroundings.
In case you don’t have pattern information out there 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 finished as part of the Docker container construct course of:
To mechanically 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 subsequently XTable in a Lambda perform, we have to set the LOCAL_IP variable of Spark to localhost and subsequently to 127.0.0.1:
To name the XTtable JAR, we use a third-party Python library referred to 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: Determine tables to transform within the Information Catalog
The detector Lambda perform scans the tables within the Information Catalog. For a desk that will probably 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 find out how 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, become the folder for this put up (
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_DOCKERsurroundings variable earlier than deployment:
After profitable deployment, the conversion mechanism begins to run each hour.
- The next parameters have to exist on the AWS Glue desk that will probably be transformed:
"xtable_table_type": "" "xtable_target_formats": ", "
On the AWS Glue console, the parameters appear like the next screenshot and could be set underneath Desk properties when modifying an AWS Glue desk.

- Optionally, if you happen to don’t have pattern information, the next scripts will help you arrange a take a look at surroundings 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 repeatedly. We now 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 strategy to analyze petabytes of information.
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 benefit from the time journey characteristic by querying the dataset with a downstream analytical service like Athena. Within the following screenshot, you possibly can 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 put up, we demonstrated find out how 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 broad compatability with AWS analytical providers.
You’ll be able to reuse the Lambda based mostly XTable deployment in different options. As an example, you may 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, discuss with the next GitHub repository.
Concerning the authors
Matthias Rudolph is a Options Architect at AWS, digitalizing the German manufacturing trade, 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 information platforms.
Dipankar Mazumdar is a Workers Information Engineer Advocate at Onehouse.ai, specializing in open-source initiatives like Apache Hudi and XTable to assist engineering groups construct and scale sturdy analytics platforms, with prior contributions to important initiatives akin to Apache Iceberg and Apache Arrow.
Stephen Stated is a Senior Options Architect and works with Retail/CPG clients. His areas of curiosity are information platforms and cloud-native software program engineering.




