This is an automated email from the ASF dual-hosted git repository. ashvin pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-xtable.git
commit 7abb7b4cd29bed9de908045139c0ae818202956f Author: Kyle Weller <[email protected]> AuthorDate: Tue Mar 5 00:20:32 2024 -0800 updated logos to have TM, updated all references of XTable to Apache XTableTM, removed unused images, and addressed all current comments (forgot to git add in prev commit :) ) --- README.md | 121 +++++++++++++++----------- website/README.md | 6 +- website/blog/OneTable-is-now-Apache-XTable.md | 12 +-- website/docs/athena.md | 6 +- website/docs/bigquery.md | 10 +-- website/docs/catalogs-index.md | 2 +- website/docs/demo/docker.md | 6 +- website/docs/fabric.md | 10 +-- website/docs/features-and-limitations.md | 4 +- website/docs/glue-catalog.md | 8 +- website/docs/hms.md | 2 +- website/docs/how-to.md | 8 +- website/docs/integrations-index.md | 2 +- website/docs/presto.md | 14 +-- website/docs/query-engines-index.md | 4 +- website/docs/redshift.md | 4 +- website/docs/setup.md | 2 +- website/docs/snowflake.md | 2 +- website/docs/spark.md | 2 +- website/docs/trino.md | 10 +-- website/static/images/xtable-svg.svg | 82 ++++++++--------- website/static/images/xtable-white-svg.svg | 68 ++++++--------- website/static/images/xtable-white.png | Bin 60873 -> 60672 bytes website/static/images/xtable-words-white.png | Bin 15321 -> 13975 bytes website/static/images/xtable-words.png | Bin 16972 -> 15930 bytes website/static/images/xtable.png | Bin 77607 -> 77700 bytes website/static/index.html | 52 +++++------ 27 files changed, 215 insertions(+), 222 deletions(-) diff --git a/README.md b/README.md index 6c9b0894..9769dce5 100644 --- a/README.md +++ b/README.md @@ -1,73 +1,81 @@ -# Apache XTable (Incubating) +# Apache XTable™ (Incubating) [](https://dev.azure.com/apache-xtable-ci-org/apache-xtable-ci/_build/latest?definitionId=2&branchName=main) -Apache XTable is a cross-table converter for table formats that facilitates omni-directional interoperability across data processing systems -and query engines. -Currently, XTable supports widely adopted open-source table formats such as Apache Hudi, Apache Iceberg, and Delta Lake. +Apache XTable™ (Incubating) is a cross-table converter for table formats that facilitates omni-directional interoperability across +data processing systems and query engines. Currently, Apache XTable™ supports widely adopted open-source table formats such as +Apache Hudi, Apache Iceberg, and Delta Lake. -XTable simplifies data lake operations by leveraging a common model for table representation. -This allows users to write data in one format while still benefiting from integrations and features available in other -formats. -For instance, XTable enables existing Hudi users to seamlessly work with Databricks's Photon Engine or query Iceberg -tables with Snowflake. -Creating transformations from one format to another is straightforward and only requires the implementation of a few interfaces, -which we believe will facilitate the expansion of supported source and target formats in the future. +Apache XTable™ simplifies data lake operations by leveraging a common model for table representation. This allows users to write +data in one format while still benefiting from integrations and features available in other formats. For instance, +Apache XTable™ enables existing Hudi users to seamlessly work with Databricks's Photon Engine or query Iceberg tables with +Snowflake. Creating transformations from one format to another is straightforward and only requires the implementation +of a few interfaces, which we believe will facilitate the expansion of supported source and target formats in the +future. # Building the project and running tests. -1. Use Java11 for building the project. If you are using some other java version, you can use [jenv](https://github.com/jenv/jenv) to use multiple java versions locally. + +1. Use Java11 for building the project. If you are using some other java version, you can + use [jenv](https://github.com/jenv/jenv) to use multiple java versions locally. 2. Build the project using `mvn clean package`. Use `mvn clean package -DskipTests` to skip tests while building. -3. Use `mvn clean test` or `mvn test` to run all unit tests. If you need to run only a specific test you can do this - by something like `mvn test -Dtest=TestDeltaSync -pl core`. +3. Use `mvn clean test` or `mvn test` to run all unit tests. If you need to run only a specific test you can do this by + something like `mvn test -Dtest=TestDeltaSync -pl core`. 4. Similarly, use `mvn clean verify` or `mvn verify` to run integration tests. # Style guide -1. We use [Maven Spotless plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven) and + +1. We use [Maven Spotless plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven) and [Google java format](https://github.com/google/google-java-format) for code style. -2. Use `mvn spotless:check` to find out code style violations and `mvn spotless:apply` to fix them. - Code style check is tied to compile phase by default, so code style violations will lead to build failures. +2. Use `mvn spotless:check` to find out code style violations and `mvn spotless:apply` to fix them. Code style check is + tied to compile phase by default, so code style violations will lead to build failures. # Running the bundled jar + 1. Get a pre-built bundled jar or create the jar with `mvn install -DskipTests` 2. create a yaml file that follows the format below: + ```yaml sourceFormat: HUDI targetFormats: - DELTA - ICEBERG datasets: - - - tableBasePath: s3://tpc-ds-datasets/1GB/hudi/call_center + - tableBasePath: s3://tpc-ds-datasets/1GB/hudi/call_center tableDataPath: s3://tpc-ds-datasets/1GB/hudi/call_center/data tableName: call_center namespace: my.db - - - tableBasePath: s3://tpc-ds-datasets/1GB/hudi/catalog_sales + - tableBasePath: s3://tpc-ds-datasets/1GB/hudi/catalog_sales tableName: catalog_sales partitionSpec: cs_sold_date_sk:VALUE - - - tableBasePath: s3://hudi/multi-partition-dataset + - tableBasePath: s3://hudi/multi-partition-dataset tableName: multi_partition_dataset partitionSpec: time_millis:DAY:yyyy-MM-dd,type:VALUE - - - tableBasePath: abfs://[email protected]/multi-partition-dataset + - tableBasePath: abfs://[email protected]/multi-partition-dataset tableName: multi_partition_dataset ``` + - `sourceFormat` is the format of the source table that you want to convert - `targetFormats` is a list of formats you want to create from your source tables - `tableBasePath` is the basePath of the table -- `tableDataPath` is an optional field specifying the path to the data files. If not specified, the tableBasePath will be used. For Iceberg source tables, you will need to specify the `/data` path. +- `tableDataPath` is an optional field specifying the path to the data files. If not specified, the tableBasePath will + be used. For Iceberg source tables, you will need to specify the `/data` path. - `namespace` is an optional field specifying the namespace of the table and will be used when syncing to a catalog. -- `partitionSpec` is a spec that allows us to infer partition values. This is only required for Hudi source tables. If the table is not partitioned, leave it blank. If it is partitioned, you can specify a spec with a comma separated list with format `path:type:format` - - `path` is a dot separated path to the partition field - - `type` describes how the partition value was generated from the column value - - `VALUE`: an identity transform of field value to partition value - - `YEAR`: data is partitioned by a field representing a date and year granularity is used - - `MONTH`: same as `YEAR` but with month granularity - - `DAY`: same as `YEAR` but with day granularity - - `HOUR`: same as `YEAR` but with hour granularity - - `format`: if your partition type is `YEAR`, `MONTH`, `DAY`, or `HOUR` specify the format for the date string as it appears in your file paths -3. The default implementations of table format clients can be replaced with custom implementations by specifying a client configs yaml file in the format below: +- `partitionSpec` is a spec that allows us to infer partition values. This is only required for Hudi source tables. If + the table is not partitioned, leave it blank. If it is partitioned, you can specify a spec with a comma separated list + with format `path:type:format` + - `path` is a dot separated path to the partition field + - `type` describes how the partition value was generated from the column value + - `VALUE`: an identity transform of field value to partition value + - `YEAR`: data is partitioned by a field representing a date and year granularity is used + - `MONTH`: same as `YEAR` but with month granularity + - `DAY`: same as `YEAR` but with day granularity + - `HOUR`: same as `YEAR` but with hour granularity + - `format`: if your partition type is `YEAR`, `MONTH`, `DAY`, or `HOUR` specify the format for the date string as it + appears in your file paths + +3. The default implementations of table format clients can be replaced with custom implementations by specifying a + client configs yaml file in the format below: + ```yaml # sourceClientProviderClass: The class name of a table format's client factory, where the client is # used for reading from a table of this format. All user configurations, including hadoop config @@ -77,15 +85,18 @@ datasets: # used for writing to a table of this format. # configuration: A map of configuration values specific to this client. tableFormatsClients: - HUDI: - sourceClientProviderClass: io.onetable.hudi.HudiSourceClientProvider - DELTA: - targetClientProviderClass: io.onetable.delta.DeltaClient - configuration: - spark.master: local[2] - spark.app.name: onetableclient + HUDI: + sourceClientProviderClass: io.onetable.hudi.HudiSourceClientProvider + DELTA: + targetClientProviderClass: io.onetable.delta.DeltaClient + configuration: + spark.master: local[2] + spark.app.name: onetableclient ``` -4. A catalog can be used when reading and updating Iceberg tables. The catalog can be specified in a yaml file and passed in with the `--icebergCatalogConfig` option. The format of the catalog config file is: + +4. A catalog can be used when reading and updating Iceberg tables. The catalog can be specified in a yaml file and + passed in with the `--icebergCatalogConfig` option. The format of the catalog config file is: + ```yaml catalogImpl: io.my.CatalogImpl catalogName: name @@ -93,20 +104,30 @@ catalogOptions: # all other options are passed through in a map key1: value1 key2: value2 ``` -5. run with `java -jar utilities/target/utilities-0.1.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml [--hadoopConfig hdfs-site.xml] [--clientsConfig clients.yaml] [--icebergCatalogConfig catalog.yaml]` -The bundled jar includes hadoop dependencies for AWS, Azure, and GCP. Authentication for AWS is done with -`com.amazonaws.auth.DefaultAWSCredentialsProviderChain`. To override this setting, specify a different implementation -with the `--awsCredentialsProvider` option. + +5. run + with `java -jar utilities/target/utilities-0.1.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml [--hadoopConfig hdfs-site.xml] [--clientsConfig clients.yaml] [--icebergCatalogConfig catalog.yaml]` + The bundled jar includes hadoop dependencies for AWS, Azure, and GCP. Authentication for AWS is done with + `com.amazonaws.auth.DefaultAWSCredentialsProviderChain`. To override this setting, specify a different implementation + with the `--awsCredentialsProvider` option. # Contributing + ## Setup + For setting up the repo on IntelliJ, open the project and change the java version to Java11 in File->ProjectStructure  -You have found a bug, or have a cool idea you that want to contribute to the project ? Please file a GitHub issue [here](https://github.com/onetable-io/onetable/issues) +You have found a bug, or have a cool idea you that want to contribute to the project ? Please file a GitHub +issue [here](https://github.com/onetable-io/onetable/issues) ## Adding a new target format -Adding a new target format requires a developer implement [TargetClient](./api/src/main/java/io/onetable/spi/sync/TargetClient.java). Once you have implemented that interface, you can integrate it into the [OneTableClient](./core/src/main/java/io/onetable/client/OneTableClient.java). If you think others may find that target useful, please raise a Pull Request to add it to the project. + +Adding a new target format requires a developer +implement [TargetClient](./api/src/main/java/io/onetable/spi/sync/TargetClient.java). Once you have implemented that +interface, you can integrate it into the [OneTableClient](./core/src/main/java/io/onetable/client/OneTableClient.java). +If you think others may find that target useful, please raise a Pull Request to add it to the project. ## Overview of the sync process +  diff --git a/website/README.md b/website/README.md index 847e989d..74803fb6 100644 --- a/website/README.md +++ b/website/README.md @@ -1,6 +1,6 @@ -# Apache XTable (Incubating) Website Source Code +# Apache XTable™ (Incubating) Website Source Code -This repo hosts the source code of [XTable](https://github.com/apache/incubator-xtable) +This repo hosts the source code of [Apache XTable™](https://github.com/apache/incubator-xtable) ## Prerequisite @@ -63,4 +63,4 @@ npm run serve ## Maintainers -[XTable Community](https://incubator.apache.org/projects/xtable.html) +[Apache XTable™ Community](https://incubator.apache.org/projects/xtable.html) diff --git a/website/blog/OneTable-is-now-Apache-XTable.md b/website/blog/OneTable-is-now-Apache-XTable.md index 6a148a51..b7c768d3 100644 --- a/website/blog/OneTable-is-now-Apache-XTable.md +++ b/website/blog/OneTable-is-now-Apache-XTable.md @@ -1,5 +1,5 @@ --- -title: "OneTable is now “Apache XTable (Incubating)”" +title: "OneTable is now “Apache XTable™ (Incubating)”" excerpt: "XTable is now Incubating in the Apache Software Foundation" author: Dipankar Mazumdar, JB Onofré category: blog @@ -9,7 +9,7 @@ tags: - community --- -# OneTable is now “Apache XTable (Incubating)” +# OneTable is now “Apache XTable™ (Incubating)” Data Lakehouse table formats such as [Apache Hudi](https://hudi.apache.org/), [Delta Lake](https://delta.io/), and [Apache Iceberg](https://iceberg.apache.org/) have enabled users to establish open foundations for their data architecture. @@ -25,7 +25,7 @@ rewrite or duplicate the actual data files. The goal of OneTable was to anchor its success in neutrality, guided by strong community values. From the very beginning, the project[ expressed its desire](https://cwiki.apache.org/confluence/display/INCUBATOR/XTable+Proposal) to be incubated under the [Apache Software Foundation](https://www.apache.org/). Today, we are excited to announce that OneTable has been -accepted as an incubating project by Apache and will henceforth be known as **Apache XTable**. As part of the incubation, +accepted as an incubating project by Apache and will henceforth be known as **Apache XTable™**. As part of the incubation, the project has transitioned the code repository to the Apache infrastructure and adopted the [community-driven development principles](https://community.apache.org/) of the Apache Foundation. @@ -53,7 +53,7 @@ the public good. <img src="/images/blog/XTable/xtable-docs.png" alt="drawing" style={{width:'80%', display:'block', marginLeft:'auto', marginRight:'auto', marginTop:'18pt', marginBottom:'18pt'}} /> -For those interested in exploring Apache XTable, the official website is a good starting point. The documentation +For those interested in exploring Apache XTable™, the official website is a good starting point. The documentation section hosts a great hands-on [quickstart](https://onetable.dev/docs/how-to) guide to getting acquainted with XTable, providing a straightforward way to experience its interoperability capabilities firsthand. If you have specific ideas, questions, or seek direct interaction, the [discussions](https://github.com/onetable-io/onetable/discussions) section @@ -61,7 +61,7 @@ is available for more in-depth exchanges. We invite you to contribute to the pro filling issues to the [XTable GitHub repository](https://github.com/apache/incubator-xtable). Contributions in the early phase of the project are going to be critical as we build XTable together. Joining the [XTable mailing list](mailto:[email protected]) is another excellent way to stay informed and engage with -the project. We are really excited about the future of Apache XTable and building it together with the vibrant data community. +the project. We are really excited about the future of Apache XTable™ and building it together with the vibrant data community. -Follow Apache XTable on [LinkedIn](https://www.linkedin.com/company/apache-xtable/) and [Twitter](https://twitter.com/apachextable) +Follow Apache XTable™ on [LinkedIn](https://www.linkedin.com/company/apache-xtable/) and [Twitter](https://twitter.com/apachextable) to keep up with the latest updates! diff --git a/website/docs/athena.md b/website/docs/athena.md index 769cd460..7d2969d4 100644 --- a/website/docs/athena.md +++ b/website/docs/athena.md @@ -4,7 +4,7 @@ title: "Amazon Athena" --- # Querying from Amazon Athena -To read a XTable synced target table (regardless of the table format) in Amazon Athena, +To read a Apache XTable™ synced target table (regardless of the table format) in Amazon Athena, you can create the table either by: * Using a DDL statement as mentioned in the following AWS docs: * [Example](https://docs.aws.amazon.com/athena/latest/ug/querying-hudi.html#querying-hudi-in-athena-creating-hudi-tables) for Hudi @@ -12,8 +12,8 @@ you can create the table either by: * [Example](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-creating-tables.html#querying-iceberg-creating-tables-query-editor) for Iceberg * Or maintain the tables in Glue Data Catalog -For an end to end tutorial that walks through S3, Glue Data Catalog and Athena to query a XTable synced table, -you can refer to the XTable [Glue Data Catalog Guide](/docs/glue-catalog). +For an end to end tutorial that walks through S3, Glue Data Catalog and Athena to query an Apache XTable™ synced table, +you can refer to the Apache XTable™ [Glue Data Catalog Guide](/docs/glue-catalog). :::danger LIMITATION for Hudi target format: To validate the Hudi targetFormat table results, you need to ensure that the query engine that you're using diff --git a/website/docs/bigquery.md b/website/docs/bigquery.md index d3f64cc4..73a8e3b1 100644 --- a/website/docs/bigquery.md +++ b/website/docs/bigquery.md @@ -6,11 +6,11 @@ title: "Google BigQuery" # Querying from Google BigQuery ### Iceberg tables -To read a XTable synced [Iceberg table from BigQuery](https://cloud.google.com/bigquery/docs/iceberg-tables), +To read an Apache XTable™ (Incubating) synced [Iceberg table from BigQuery](https://cloud.google.com/bigquery/docs/iceberg-tables), you have two options: #### [Using Iceberg JSON metadata file to create the Iceberg BigLake tables](https://cloud.google.com/bigquery/docs/iceberg-tables#create-using-metadata-file): -XTable outputs metadata files for Iceberg target format syncs which can be used by BigQuery +Apache XTable™ outputs metadata files for Iceberg target format syncs which can be used by BigQuery to read the BigLake tables. ```sql md title="sql" @@ -48,9 +48,9 @@ If you are not planning on using Iceberg, then you do not need to add these to y #### [Using BigLake Metastore to create the Iceberg BigLake tables](https://cloud.google.com/bigquery/docs/iceberg-tables#create-using-biglake-metastore): -You can use two options to register XTable synced Iceberg tables to BigLake Metastore: -* To directly register the XTable synced Iceberg table to BigLake Metastore, - follow the [XTable guide to integrate with BigLake Metastore](/docs/biglake-metastore) +You can use two options to register Apache XTable™ synced Iceberg tables to BigLake Metastore: +* To directly register the Apache XTable™ synced Iceberg table to BigLake Metastore, + follow the [Apache XTable™ guide to integrate with BigLake Metastore](/docs/biglake-metastore) * Use [stored procedures for Spark](https://cloud.google.com/bigquery/docs/spark-procedures) on BigQuery to register the table in BigLake Metastore and query the tables from BigQuery. diff --git a/website/docs/catalogs-index.md b/website/docs/catalogs-index.md index 4a9e212a..0a1da307 100644 --- a/website/docs/catalogs-index.md +++ b/website/docs/catalogs-index.md @@ -1,6 +1,6 @@ # Catalogs -Integrating the XTable synced target tables to external catalogs requires an explicit registration. This guide will +Integrating the Apache XTable™ (Incubating) synced target tables to external catalogs requires an explicit registration. This guide will walk you through the required steps. In addition to the information in this guide, we recommend you following official guidelines from the respective diff --git a/website/docs/demo/docker.md b/website/docs/demo/docker.md index c28c4c3f..93f63e33 100644 --- a/website/docs/demo/docker.md +++ b/website/docs/demo/docker.md @@ -3,14 +3,14 @@ sidebar_position: 1 title: "Docker Demo" --- -# Building interoperable tables using XTable -This demo walks you through a fictional use case and the steps to add interoperability between table formats using XTable. +# Building interoperable tables using Apache XTable™ (Incubating) +This demo walks you through a fictional use case and the steps to add interoperability between table formats using Apache XTable™. For this purpose, a self-contained data infrastructure is brought up as Docker containers within your computer. ## Pre-requisites * Install Docker in your local machine -* Clone [XTable GitHub repository](https://github.com/apache/incubator-xtable) +* Clone [Apache XTable™ GitHub repository](https://github.com/apache/incubator-xtable) :::note NOTE: This demo was tested in both x86-64 and AArch64 based macOS operating systems diff --git a/website/docs/fabric.md b/website/docs/fabric.md index 0d3f671c..f9ceee6f 100644 --- a/website/docs/fabric.md +++ b/website/docs/fabric.md @@ -8,8 +8,8 @@ import TabItem from '@theme/TabItem'; # Querying from Microsoft Fabric This guide offers a short tutorial on how to query Apache Iceberg and Apache Hudi tables in Microsoft Fabric utilizing -the translation capabilities of XTable. This tutorial is intended solely for demonstration and to verify the -compatibility of XTable's output with Fabric. The tutorial leverages the currently[^1] available features in Fabric, like +the translation capabilities of Apache XTable™ (Incubating). This tutorial is intended solely for demonstration and to verify the +compatibility of Apache XTable™'s output with Fabric. The tutorial leverages the currently[^1] available features in Fabric, like `Shortcuts`. @@ -26,7 +26,7 @@ to data in other file systems. ## Tutorial The objective of the following tutorial is to translate an Iceberg or Hudi table in ADLS storage account into Delta Lake -format using XTable. After translation, this table will be accessible for querying from various Fabric engines, +format using Apache XTable™. After translation, this table will be accessible for querying from various Fabric engines, including T-SQL, Spark, and Power BI. ### Pre-requisites @@ -51,8 +51,8 @@ spark.hadoop.fs.azure.account.oauth2.client.id=<client-id> spark.hadoop.fs.azure.account.oauth2.client.secret=<client-secret> ``` -### Step 2. Translate source table to Delta Lake format using XTable -This step translates the table `people` originally in Iceberg or Hudi format to Delta Lake format using XTable. +### Step 2. Translate source table to Delta Lake format using Apache XTable™ +This step translates the table `people` originally in Iceberg or Hudi format to Delta Lake format using Apache XTable™. The primary actions for the translation are documented in [Creating your first interoperable table - Running Sync](/docs/how-to#running-sync) tutorial section. However, since the table is in ADLS, you need to update datasets path and hadoop configurations. diff --git a/website/docs/features-and-limitations.md b/website/docs/features-and-limitations.md index c94ffabb..b5a5c8cb 100644 --- a/website/docs/features-and-limitations.md +++ b/website/docs/features-and-limitations.md @@ -8,9 +8,9 @@ import TabItem from '@theme/TabItem'; # Features and Limitations ## Features -XTable provides users with the ability to translate metadata from one table format to another. +Apache XTable™ (Incubating) provides users with the ability to translate metadata from one table format to another. -XTable provides two sync modes, "incremental" and "full." The incremental mode is more lightweight and has better performance, especially on large tables. If there is anything that prevents the incremental mode from working properly, the tool will fall back to the full sync mode. +Apache XTable™ provides two sync modes, "incremental" and "full." The incremental mode is more lightweight and has better performance, especially on large tables. If there is anything that prevents the incremental mode from working properly, the tool will fall back to the full sync mode. This sync provides users with the following: 1. Syncing of data files along with their column level statistics and partition metadata diff --git a/website/docs/glue-catalog.md b/website/docs/glue-catalog.md index 9175de51..ebc6e687 100644 --- a/website/docs/glue-catalog.md +++ b/website/docs/glue-catalog.md @@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Syncing to Glue Data Catalog -This document walks through the steps to register a XTable synced table in Glue Data Catalog on AWS. +This document walks through the steps to register an Apache XTable™ (Incubating) synced table in Glue Data Catalog on AWS. ## Pre-requisites 1. Source table(s) (Hudi/Delta/Iceberg) already written to Amazon S3. @@ -18,12 +18,12 @@ This document walks through the steps to register a XTable synced table in Glue [AWS docs](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) and also set up access credentials by following the steps [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) -3. Clone the XTable [repository](https://github.com/apache/incubator-xtable) and create the +3. Clone the Apache XTable™ [repository](https://github.com/apache/incubator-xtable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) ## Steps ### Running sync -Create `my_config.yaml` in the cloned XTable directory. +Create `my_config.yaml` in the cloned Apache XTable™ directory. <Tabs groupId="table-format" @@ -193,6 +193,6 @@ SELECT * FROM onetable_synced_db.<table_name>; ## Conclusion In this guide we saw how to, -1. sync a source table to create metadata for the desired target table formats using XTable +1. sync a source table to create metadata for the desired target table formats using Apache XTable™ 2. catalog the data in the target table format in Glue Data Catalog 3. query the target table using Amazon Athena diff --git a/website/docs/hms.md b/website/docs/hms.md index 18c6c7ea..4d7b71f8 100644 --- a/website/docs/hms.md +++ b/website/docs/hms.md @@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Syncing to Hive Metastore -This document walks through the steps to register a XTable synced table on Hive Metastore (HMS). +This document walks through the steps to register an Apache XTable™ (Incubating) synced table on Hive Metastore (HMS). ## Pre-requisites 1. Source table(s) (Hudi/Delta/Iceberg) already written to your local storage or external storage locations like S3/GCS/ADLS. diff --git a/website/docs/how-to.md b/website/docs/how-to.md index 8b0d5c7b..22f3af7c 100644 --- a/website/docs/how-to.md +++ b/website/docs/how-to.md @@ -9,13 +9,13 @@ import TabItem from '@theme/TabItem'; # Creating your first interoperable table :::danger Important -Using XTable to sync your source tables in different target format involves running sync on your +Using Apache XTable™ (Incubating) to sync your source tables in different target format involves running sync on your current dataset using a bundled jar. You can create this bundled jar by following the instructions -on the [Installation page](/docs/setup). Read through XTable's +on the [Installation page](/docs/setup). Read through Apache XTable™'s [GitHub page](https://github.com/apache/incubator-xtable#building-the-project-and-running-tests) for more information. ::: -In this tutorial we will look at how to use XTable to add interoperability between table formats. +In this tutorial we will look at how to use Apache XTable™ to add interoperability between table formats. For example, you can expose a table ingested with Hudi as an Iceberg and/or Delta Lake table without copying or moving the underlying data files used for that table while maintaining a similar commit history to enable proper point in time queries. @@ -23,7 +23,7 @@ history to enable proper point in time queries. ## Pre-requisites 1. A compute instance where you can run Apache Spark. This can be your local machine, docker, or a distributed service like Amazon EMR, Google Cloud's Dataproc, Azure HDInsight etc -2. Clone the XTable [repository](https://github.com/apache/incubator-xtable) and create the +2. Clone the Apache XTable™ [repository](https://github.com/apache/incubator-xtable) and create the `utilities-0.1.0-SNAPSHOT-bundled.jar` by following the steps on the [Installation page](/docs/setup) 3. Optional: Setup access to write to and/or read from distributed storage services like: * Amazon S3 by following the steps diff --git a/website/docs/integrations-index.md b/website/docs/integrations-index.md index cc4ddb64..b8b429a0 100644 --- a/website/docs/integrations-index.md +++ b/website/docs/integrations-index.md @@ -1,6 +1,6 @@ # Integrations -This guide will serve as a reference to integrate XTable synced tables to various +This guide will serve as a reference to integrate Apache XTable™ (Incubating) synced tables to various catalogs and query engines. In addition to the information in this guide, we recommend you following official guidelines diff --git a/website/docs/presto.md b/website/docs/presto.md index 2fee5352..6f49da84 100644 --- a/website/docs/presto.md +++ b/website/docs/presto.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; # Querying from Presto Presto allows you to query table formats like Hudi, Delta and Iceberg using connectors. The same setup will -work for XTable synced tables as well. +work for Apache XTable™ (Incubating) synced tables as well. For more information and required configurations refer to: * [Hudi Connector](https://prestodb.io/docs/current/connector/hudi.html) @@ -19,12 +19,12 @@ For more information and required configurations refer to: :::danger Delta Lake: Delta Lake supports [generated columns](https://docs.databricks.com/en/delta/generated-columns.html) which are a special type of column whose values are automatically generated based on a user-specified function -over other columns in the Delta table. During sync, XTable uses the same logic to generate partition columns wherever required. -Currently, the generated columns from XTable sync shows `NULL` when queried from Presto CLI. +over other columns in the Delta table. During sync, Apache XTable™ uses the same logic to generate partition columns wherever required. +Currently, the generated columns from Apache XTable™ sync shows `NULL` when queried from Presto CLI. ::: For hands on experimentation, please follow [Creating your first interoperable table](/docs/how-to) tutorial -to create XTable synced tables followed by [Hive Metastore](/docs/hms) tutorial to register the target table +to create Apache XTable™ synced tables followed by [Hive Metastore](/docs/hms) tutorial to register the target table in Hive Metastore. Once done, follow the below high level steps: 1. If you are working with a self-managed Presto service, from the presto-server directory run `./bin/launcher run` 2. From the directory where you have installed presto-cli: login to presto-cli by running `./presto-cli` @@ -42,7 +42,7 @@ values={[ <TabItem value="hudi"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Hudi table +If you are following the example from [Hive Metastore](/docs/hms), you can query the Apache XTable™ synced Hudi table from Presto using the below query. ```sql md title="sql" SELECT * FROM hudi.hudi_db.<table_name>; @@ -53,7 +53,7 @@ SELECT * FROM hudi.hudi_db.<table_name>; <TabItem value="delta"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Delta table +If you are following the example from [Hive Metastore](/docs/hms), you can query the Apache XTable™ synced Delta table from Presto using the below query. ```sql md title="sql" SELECT * FROM delta.delta_db.<table_name>; @@ -64,7 +64,7 @@ SELECT * FROM delta.delta_db.<table_name>; <TabItem value="iceberg"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Iceberg table +If you are following the example from [Hive Metastore](/docs/hms), you can query the Apache XTable™ synced Iceberg table from Presto using the below query. ```sql md title="sql" SELECT * FROM iceberg.iceberg_db.<table_name>; diff --git a/website/docs/query-engines-index.md b/website/docs/query-engines-index.md index 46266259..f852c523 100644 --- a/website/docs/query-engines-index.md +++ b/website/docs/query-engines-index.md @@ -1,7 +1,7 @@ # Query Engines -XTable synced tables behave the similarly to native tables which means you do not need any additional configurations -on query engines' side to work with tables synced by XTable. This guide will delve into the details of working +Apache XTable™ (Incubating) synced tables behave the similarly to native tables which means you do not need any additional configurations +on query engines' side to work with tables synced by Apache XTable™. This guide will delve into the details of working with various query engines. For more information on how to sync a source format table to create necessary log files to be inferred as a different format table, refer to [Creating your first interoperable table guide](/docs/how-to) diff --git a/website/docs/redshift.md b/website/docs/redshift.md index 17d1ec73..64c2f4b4 100644 --- a/website/docs/redshift.md +++ b/website/docs/redshift.md @@ -4,7 +4,7 @@ title: "Amazon Redshift Spectrum" --- # Querying from Redshift Spectrum -To read a XTable synced target table (regardless of the table format) in Amazon Redshift, +To read a Apache XTable™ synced target table (regardless of the table format) in Amazon Redshift, users have to create an external schema and refer to the external data catalog that contains the table. Redshift infers the table's schema and format from the external catalog/database directly. For more information on creating external schemas, refer to @@ -41,7 +41,7 @@ You have two options to create and query Delta tables in Redshift Spectrum: 1. Follow the steps in [this](https://docs.delta.io/latest/redshift-spectrum-integration.html#set-up-a-redshift-spectrum-to-delta-lake-integration-and-query-delta-tables) article to set up a Redshift Spectrum to Delta Lake integration and query Delta tables directly from Amazon S3. -2. While creating the Glue Crawler to crawl the XTable synced Delta table, choose the `Create Symlink tables` +2. While creating the Glue Crawler to crawl the Apache XTable™ synced Delta table, choose the `Create Symlink tables` option in `Add data source` pop-up window. This will add `_symlink_format_manifest` folder with manifest files in the table root path. diff --git a/website/docs/setup.md b/website/docs/setup.md index 029d786a..0b6d70fa 100644 --- a/website/docs/setup.md +++ b/website/docs/setup.md @@ -1,6 +1,6 @@ # Installation -This page covers the essential steps to setup Apache XTable (incubating) in your environment. +This page covers the essential steps to setup Apache XTable™ (incubating) in your environment. ## Pre-requisites 1. Building the project requires Java 11 and Maven to be setup and configured using PATH or environment variables. diff --git a/website/docs/snowflake.md b/website/docs/snowflake.md index 83d87a11..882f8996 100644 --- a/website/docs/snowflake.md +++ b/website/docs/snowflake.md @@ -14,7 +14,7 @@ Iceberg on Snowflake is currently supported in ::: ## Steps: -These are high level steps to help you integrate XTable synced Iceberg tables on Snowflake. For more additional information +These are high level steps to help you integrate Apache XTable™ (Incubating) synced Iceberg tables on Snowflake. For more additional information refer to the [Getting started with Iceberg tables](https://docs.snowflake.com/LIMITEDACCESS/iceberg-2023/tables-iceberg-getting-started). ### Create an external volume diff --git a/website/docs/spark.md b/website/docs/spark.md index 876c0300..78945fca 100644 --- a/website/docs/spark.md +++ b/website/docs/spark.md @@ -7,7 +7,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Querying from Apache Spark -To read a XTable synced target table (regardless of the table format) in Apache Spark locally or on services like +To read a Apache XTable™ (Incubating) synced target table (regardless of the table format) in Apache Spark locally or on services like Amazon EMR, Google Cloud's Dataproc, Azure HDInsight, or Databricks, you do not need additional jars or configs other than what is needed by the respective table formats. diff --git a/website/docs/trino.md b/website/docs/trino.md index 5ec91169..b870b713 100644 --- a/website/docs/trino.md +++ b/website/docs/trino.md @@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem'; # Querying from Trino Trino just like Presto allows you to query table formats like Hudi, Delta and Iceberg tables using connectors. -Users do not need additional configurations to work with XTable synced tables. +Users do not need additional configurations to work with Apache XTable™ (Incubating) synced tables. For more information and required configurations refer to: * [Hudi Connector](https://trino.io/docs/current/connector/hudi.html) @@ -17,7 +17,7 @@ For more information and required configurations refer to: * [Iceberg Connector](https://trino.io/docs/current/connector/iceberg.html) For hands on experimentation, please follow [Creating your first interoperable table](/docs/how-to#create-dataset) -to create XTable synced tables followed by [Hive Metastore](/docs/hms) to register the target table +to create Apache XTable™ synced tables followed by [Hive Metastore](/docs/hms) to register the target table in Hive Metastore. Once done, please follow the below high level steps: 1. Start the Trino server manually if you are working with a non-managed Trino service: from the trino-server directory run `./bin/launcher run` @@ -36,7 +36,7 @@ values={[ <TabItem value="hudi"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Hudi table +If you are following the example from [Hive Metastore](/docs/hms), you can query the Apache XTable™ synced Hudi table from Trino using the below query. ```sql md title="sql" SELECT * FROM hudi.hudi_db.<table_name>; @@ -47,7 +47,7 @@ SELECT * FROM hudi.hudi_db.<table_name>; <TabItem value="delta"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Delta table +If you are following the example from [Hive Metastore](/docs/hms), you can query the Apache XTable™ synced Delta table from Trino using the below query. ```sql md title="sql" SELECT * FROM delta.delta_db.<table_name>; @@ -58,7 +58,7 @@ SELECT * FROM delta.delta_db.<table_name>; <TabItem value="iceberg"> :::tip Note: -If you are following the example from [Hive Metastore](/docs/hms), you can query the XTable synced Iceberg table +If you are following the example from [Hive Metastore](/docs/hms), you can query the Apache XTable™ synced Iceberg table from Trino using the below query. ```sql md title="sql" SELECT * FROM iceberg.iceberg_db.<table_name>; diff --git a/website/static/images/xtable-svg.svg b/website/static/images/xtable-svg.svg index 6e310632..73ffcded 100644 --- a/website/static/images/xtable-svg.svg +++ b/website/static/images/xtable-svg.svg @@ -1,86 +1,72 @@ -<!--Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License.--> -<svg width="554" height="150" viewBox="0 0 554 150" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_401_458)"> +<svg width="560" height="150" viewBox="0 0 560 150" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_428_7698)"> <path d="M57.6017 4.95173L32.8815 4.88231L19.633 27.8283L44.3533 27.8977L57.6017 4.95173Z" fill="#5DA9E5"/> -<path d="M74.8644 122.144L87.2849 143.517L112.731 143.344L100.648 122.555L74.8644 122.144Z" fill="#C5C5C5"/> -<path d="M128.931 27.8275L74.5265 121.561L100.646 122.555L155.297 27.9015L128.931 27.8275Z" fill="#3587C8"/> -<path d="M44.3537 27.8983L19.6335 27.8283L87.5302 144.663L112.25 144.733L44.3537 27.8983Z" fill="url(#paint0_linear_401_458)"/> -<path d="M20.1692 27.5186L32.5898 48.8918L141.349 49.1998L128.928 27.8265L20.1692 27.5186Z" fill="url(#paint1_linear_401_458)"/> -<path d="M100.646 122.556L112.73 143.345L167.716 49.2749L155.295 27.9017L100.646 122.556Z" fill="url(#paint2_linear_401_458)"/> -<path d="M56.1866 48.899L112.25 144.734L125.498 121.788L83.4748 48.8989L56.1866 48.899Z" fill="url(#paint3_linear_401_458)"/> -<path d="M100.646 122.556L113.254 100.719L125.498 121.788L112.25 144.734L99.3597 122.552L100.646 122.556Z" fill="url(#paint4_linear_401_458)"/> -<path d="M155.295 27.9017L167.716 49.2749L180.964 26.3289L168.544 4.95565L155.295 27.9017Z" fill="url(#paint5_linear_401_458)"/> -<path d="M128.927 27.8264L155.294 27.9012L113.253 100.718L100.005 77.9216L128.927 27.8264Z" fill="url(#paint6_linear_401_458)"/> -<path d="M155.294 27.9012L168.543 4.95529L33.417 4.57226L20.1692 27.5182L128.927 27.8264L155.294 27.9012Z" fill="url(#paint7_linear_401_458)"/> -</g> -<path d="M257.539 124.947L238.054 97.4293L217.846 124.947H210L234.263 91.928L211.348 59.3584H223.709L241.66 84.7061L260.246 59.3584H268.092L245.452 90.3061L269.901 124.947H257.539Z" fill="#03659D"/> -<path d="M285.016 65.841V59.7041H335.536V65.841H315.24V125.293H305.311V65.841H285.016Z" fill="#03659D"/> -<path d="M380.543 125.293L378.834 117.359C377.573 119.945 375.403 122.06 372.335 123.715C369.267 125.37 365.595 126.192 361.332 126.192C357.968 126.192 354.954 125.699 352.313 124.702C349.661 123.704 347.59 122.192 346.089 120.143C344.587 118.093 343.831 115.507 343.831 112.384C343.831 110.039 344.324 107.978 345.322 106.203C346.319 104.428 347.678 102.97 349.431 101.831C350.932 100.691 352.62 99.8141 354.483 99.2114C356.346 98.6086 358.527 98.1703 361.025 97.9073C363.524 97.6333 366.483 [...] +<path d="M74.8642 122.144L87.2846 143.517L112.731 143.344L100.648 122.555L74.8642 122.144Z" fill="#C5C5C5"/> +<path d="M128.93 27.8275L74.5262 121.561L100.646 122.555L155.297 27.9015L128.93 27.8275Z" fill="#3587C8"/> +<path d="M44.3535 27.8983L19.6333 27.8283L87.5299 144.663L112.25 144.733L44.3535 27.8983Z" fill="url(#paint0_linear_428_7698)"/> +<path d="M20.1689 27.5186L32.5896 48.8918L141.349 49.1998L128.928 27.8265L20.1689 27.5186Z" fill="url(#paint1_linear_428_7698)"/> +<path d="M100.646 122.556L112.73 143.345L167.716 49.2749L155.295 27.9017L100.646 122.556Z" fill="url(#paint2_linear_428_7698)"/> +<path d="M56.1864 48.899L112.25 144.734L125.498 121.788L83.4745 48.8989L56.1864 48.899Z" fill="url(#paint3_linear_428_7698)"/> +<path d="M100.646 122.556L113.254 100.719L125.498 121.788L112.25 144.734L99.3595 122.552L100.646 122.556Z" fill="url(#paint4_linear_428_7698)"/> +<path d="M155.295 27.9017L167.716 49.2749L180.964 26.3289L168.543 4.95565L155.295 27.9017Z" fill="url(#paint5_linear_428_7698)"/> +<path d="M128.928 27.8264L155.294 27.9012L113.253 100.718L100.005 77.9216L128.928 27.8264Z" fill="url(#paint6_linear_428_7698)"/> +<path d="M155.294 27.9012L168.543 4.95529L33.4173 4.57226L20.1694 27.5182L128.928 27.8264L155.294 27.9012Z" fill="url(#paint7_linear_428_7698)"/> +<path d="M257.539 124.947L238.055 97.4293L217.847 124.947H210L234.263 91.928L211.348 59.3584H223.709L241.66 84.7061L260.246 59.3584H268.093L245.452 90.3061L269.901 124.947H257.539Z" fill="#03659D"/> +<path d="M285.016 65.841V59.7041H335.536V65.841H315.241V125.293H305.312V65.841H285.016Z" fill="#03659D"/> +<path d="M380.544 125.293L378.834 117.359C377.574 119.945 375.404 122.06 372.335 123.715C369.267 125.37 365.596 126.192 361.333 126.192C357.968 126.192 354.955 125.699 352.314 124.702C349.662 123.704 347.59 122.192 346.089 120.143C344.588 118.093 343.832 115.507 343.832 112.384C343.832 110.039 344.325 107.978 345.322 106.203C346.319 104.428 347.678 102.97 349.432 101.831C350.933 100.691 352.621 99.8141 354.484 99.2114C356.347 98.6086 358.527 98.1703 361.026 97.9073C363.525 97.6333 366.48 [...] <path d="M452.631 101.38C452.631 106.071 451.677 110.301 449.792 114.06C447.897 117.819 445.233 120.778 441.803 122.947C438.373 125.117 434.341 126.191 429.716 126.191C425.628 126.191 422.121 125.336 419.206 123.616C416.291 121.906 414.023 119.747 412.401 117.161L411.053 125.282H403.382V56.0986H412.401V85.5121C414.143 83.1121 416.565 81.0957 419.667 79.4628C422.768 77.8409 426.143 77.03 429.814 77.03C434.505 77.03 438.549 78.0711 441.946 80.1423C445.343 82.2135 447.973 85.0847 449.836 88 [...] <path d="M465.167 125.293V56.0986H474.187V125.293H465.167Z" fill="#03659D"/> <path d="M533.365 109.589C533.365 113.381 532.312 116.504 530.208 118.97C528.104 121.435 525.365 123.255 522 124.427C518.636 125.6 515.052 126.191 511.261 126.191C506.209 126.191 501.847 125.194 498.176 123.211C494.505 121.227 491.677 118.4 489.694 114.729C487.71 111.057 486.713 106.729 486.713 101.742C486.713 96.8657 487.71 92.5698 489.694 88.8438C491.677 85.1178 494.472 82.2138 498.088 80.1425C501.694 78.0713 505.935 77.0303 510.811 77.0303C517.967 77.0303 523.622 79.0466 527.776 83.07 [...] -<path d="M335.734 42.2745C335.734 46.4211 331.847 48.1704 327.7 48.1704C322.193 48.1704 318.597 44.8338 318.597 39.3266C318.597 33.949 322.063 30.418 327.441 30.418C332.657 30.418 335.961 33.4955 335.961 38.7111C335.961 39.197 335.929 39.6505 335.896 40.2013H322.906C323.132 43.2788 324.623 46 327.7 46C330.097 46 331.523 44.6718 331.523 42.2745H335.734ZM327.441 32.5884C324.493 32.5884 323.197 35.1152 322.938 38.0632H331.847C331.847 34.9209 330.583 32.5884 327.441 32.5884Z" fill="#03659D"/> -<path d="M301.926 38.42V47.847H297.747V23H301.926V33.496C302.898 31.779 304.874 30.4185 307.693 30.4185C312.131 30.4185 314.819 33.334 314.819 37.8693V47.847H310.673V38.2904C310.673 35.1805 309.15 33.2368 306.332 33.2368C303.546 33.2368 301.926 35.5369 301.926 38.42Z" fill="#03659D"/> -<path d="M293.655 41.821C293.655 45.9352 289.93 48.1704 285.459 48.1704C280.082 48.1704 276.648 44.769 276.648 39.3914C276.648 34.0786 280.147 30.418 285.492 30.418C289.8 30.418 293.72 32.6208 293.72 36.6054V36.9294H289.476C289.476 34.4997 287.921 32.5884 285.492 32.5884C282.09 32.5884 280.956 35.9899 280.956 39.3914C280.956 42.7929 282.058 45.8704 285.459 45.8704C288.019 45.8704 289.379 44.0887 289.379 41.4971H293.655V41.821Z" fill="#03659D"/> -<path d="M269.426 47.8465L268.714 45.2225C267.871 46.9718 265.733 48.1704 262.656 48.1704C259.092 48.1704 256.501 46.5831 256.501 43.214C256.501 41.3351 257.408 40.0069 258.898 39.0998C260.583 38.0632 262.656 37.7716 265.96 37.7716C266.9 37.7716 267.871 37.804 268.681 37.8364V36.3463C268.681 34.0138 267.418 32.5884 265.118 32.5884C262.85 32.5884 261.522 33.7547 261.522 36.0223H257.44V35.666C257.44 32.4589 260.259 30.418 265.118 30.418C269.459 30.418 272.86 32.4589 272.86 36.7998V47.8465H [...] -<path d="M245.432 48.1704C242.517 48.1704 240.541 46.8746 239.569 45.2873V54.779H235.39V30.7419H239.051L239.536 33.5279C240.411 32.0377 242.16 30.418 245.432 30.418C250.551 30.418 253.628 34.3378 253.628 39.3266C253.628 44.4126 250.486 48.1704 245.432 48.1704ZM244.396 32.88C241.091 32.88 239.569 35.9251 239.569 39.2294C239.569 42.6309 241.027 45.5464 244.46 45.5464C247.797 45.5464 249.32 42.5661 249.32 39.2294C249.32 35.9575 247.797 32.88 244.396 32.88Z" fill="#03659D"/> -<path d="M210 47.8471L218.487 24.2959H224.092L232.547 47.8471H227.525L225.355 41.6272H215.215L212.948 47.8471H210ZM216.155 39.0032H224.448L220.366 27.3086L216.155 39.0032Z" fill="#03659D"/> +<path d="M335.735 42.2745C335.735 46.4211 331.847 48.1704 327.701 48.1704C322.194 48.1704 318.598 44.8338 318.598 39.3266C318.598 33.949 322.064 30.418 327.441 30.418C332.657 30.418 335.961 33.4955 335.961 38.7111C335.961 39.197 335.929 39.6505 335.897 40.2013H322.906C323.133 43.2788 324.623 46 327.701 46C330.098 46 331.523 44.6718 331.523 42.2745H335.735ZM327.441 32.5884C324.494 32.5884 323.198 35.1152 322.939 38.0632H331.847C331.847 34.9209 330.584 32.5884 327.441 32.5884Z" fill="#03659D"/> +<path d="M301.927 38.42V47.847H297.748V23H301.927V33.496C302.898 31.779 304.874 30.4185 307.693 30.4185C312.131 30.4185 314.82 33.334 314.82 37.8693V47.847H310.673V38.2904C310.673 35.1805 309.151 33.2368 306.332 33.2368C303.546 33.2368 301.927 35.5369 301.927 38.42Z" fill="#03659D"/> +<path d="M293.656 41.821C293.656 45.9352 289.93 48.1704 285.46 48.1704C280.082 48.1704 276.648 44.769 276.648 39.3914C276.648 34.0786 280.147 30.418 285.492 30.418C289.801 30.418 293.721 32.6208 293.721 36.6054V36.9294H289.477C289.477 34.4997 287.922 32.5884 285.492 32.5884C282.091 32.5884 280.957 35.9899 280.957 39.3914C280.957 42.7929 282.058 45.8704 285.46 45.8704C288.019 45.8704 289.38 44.0887 289.38 41.4971H293.656V41.821Z" fill="#03659D"/> +<path d="M269.427 47.8465L268.714 45.2225C267.872 46.9718 265.734 48.1704 262.656 48.1704C259.093 48.1704 256.501 46.5831 256.501 43.214C256.501 41.3351 257.408 40.0069 258.898 39.0998C260.583 38.0632 262.656 37.7716 265.96 37.7716C266.9 37.7716 267.872 37.804 268.682 37.8364V36.3463C268.682 34.0138 267.418 32.5884 265.118 32.5884C262.85 32.5884 261.522 33.7547 261.522 36.0223H257.44V35.666C257.44 32.4589 260.259 30.418 265.118 30.418C269.459 30.418 272.86 32.4589 272.86 36.7998V47.8465H [...] +<path d="M245.433 48.1704C242.517 48.1704 240.541 46.8746 239.569 45.2873V54.779H235.39V30.7419H239.051L239.537 33.5279C240.411 32.0377 242.161 30.418 245.433 30.418C250.551 30.418 253.629 34.3378 253.629 39.3266C253.629 44.4126 250.486 48.1704 245.433 48.1704ZM244.396 32.88C241.092 32.88 239.569 35.9251 239.569 39.2294C239.569 42.6309 241.027 45.5464 244.461 45.5464C247.797 45.5464 249.32 42.5661 249.32 39.2294C249.32 35.9575 247.797 32.88 244.396 32.88Z" fill="#03659D"/> +<path d="M210 47.8471L218.487 24.2959H224.092L232.547 47.8471H227.526L225.355 41.6272H215.216L212.948 47.8471H210ZM216.155 39.0032H224.448L220.366 27.3086L216.155 39.0032Z" fill="#03659D"/> +<path d="M538 117.984V117H544.888V117.984H542.284V125.724H540.592V117.984H538Z" fill="#03659D"/> +<path d="M548.655 117L551.319 122.784L553.971 117H556.083V125.724H554.391V118.62L551.475 124.98H550.551L547.611 118.62V125.724H546.435V117H548.655Z" fill="#03659D"/> +</g> <defs> -<linearGradient id="paint0_linear_401_458" x1="120.255" y1="27.5423" x2="75.1704" y2="149.153" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint0_linear_428_7698" x1="120.254" y1="27.5423" x2="75.1702" y2="149.153" gradientUnits="userSpaceOnUse"> <stop offset="0.0370701" stop-color="#084D7E"/> <stop offset="0.403607" stop-color="#10639C"/> <stop offset="1" stop-color="#094B79"/> </linearGradient> -<linearGradient id="paint1_linear_401_458" x1="120.255" y1="27.5423" x2="75.1704" y2="149.153" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint1_linear_428_7698" x1="120.254" y1="27.5423" x2="75.1702" y2="149.153" gradientUnits="userSpaceOnUse"> <stop offset="0.0370701" stop-color="#084D7E"/> <stop offset="0.403607" stop-color="#10639C"/> <stop offset="1" stop-color="#094B79"/> </linearGradient> -<linearGradient id="paint2_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint2_linear_428_7698" x1="135.085" y1="-3.30467" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#1964A0"/> <stop offset="0.448809" stop-color="#1A73BA"/> <stop offset="0.97652" stop-color="#185D94"/> </linearGradient> -<linearGradient id="paint3_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint3_linear_428_7698" x1="135.085" y1="-3.30467" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#1964A0"/> <stop offset="0.448809" stop-color="#1A73BA"/> <stop offset="0.97652" stop-color="#185D94"/> </linearGradient> -<linearGradient id="paint4_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint4_linear_428_7698" x1="135.085" y1="-3.30467" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#1964A0"/> <stop offset="0.448809" stop-color="#1A73BA"/> <stop offset="0.97652" stop-color="#185D94"/> </linearGradient> -<linearGradient id="paint5_linear_401_458" x1="135.085" y1="-3.30467" x2="100.086" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint5_linear_428_7698" x1="135.085" y1="-3.30467" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#1964A0"/> <stop offset="0.448809" stop-color="#1A73BA"/> <stop offset="0.97652" stop-color="#185D94"/> </linearGradient> -<linearGradient id="paint6_linear_401_458" x1="19.9995" y1="3.22043" x2="136.864" y2="80.3391" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint6_linear_428_7698" x1="19.9997" y1="3.22043" x2="136.864" y2="80.3391" gradientUnits="userSpaceOnUse"> <stop stop-color="#64AEE9"/> <stop offset="1" stop-color="#277CBF"/> </linearGradient> -<linearGradient id="paint7_linear_401_458" x1="19.9995" y1="3.22043" x2="136.864" y2="80.3391" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint7_linear_428_7698" x1="19.9997" y1="3.22043" x2="136.864" y2="80.3391" gradientUnits="userSpaceOnUse"> <stop stop-color="#64AEE9"/> <stop offset="1" stop-color="#277CBF"/> </linearGradient> -<clipPath id="clip0_401_458"> -<rect width="161" height="140" fill="white" transform="matrix(-1 0 0 1 181 5)"/> +<clipPath id="clip0_428_7698"> +<rect width="560" height="150" fill="white"/> </clipPath> </defs> </svg> diff --git a/website/static/images/xtable-white-svg.svg b/website/static/images/xtable-white-svg.svg index c1151a00..09cc3bac 100644 --- a/website/static/images/xtable-white-svg.svg +++ b/website/static/images/xtable-white-svg.svg @@ -1,86 +1,72 @@ -<!--Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License.--> -<svg width="554" height="150" viewBox="0 0 554 150" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_401_490)"> +<svg width="560" height="150" viewBox="0 0 560 150" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_428_7666)"> <path d="M57.6018 4.95302L32.8815 4.88297L19.6337 27.8289L44.354 27.899L57.6018 4.95302Z" fill="#5DA9E5"/> <path d="M74.8645 122.145L87.2854 143.519L112.732 143.347L100.648 122.557L74.8645 122.145Z" fill="#C5C5C5"/> <path d="M128.93 27.8301L74.528 121.563L100.648 122.559L155.296 27.9048L128.93 27.8301Z" fill="#DCDCDC"/> -<path d="M44.3533 27.9023L19.6331 27.8322L87.5304 144.667L112.251 144.737L44.3533 27.9023Z" fill="url(#paint0_linear_401_490)"/> -<path d="M20.1687 27.5225L32.5895 48.8958L141.349 49.2039L128.928 27.8305L20.1687 27.5225Z" fill="url(#paint1_linear_401_490)"/> -<path d="M100.647 122.557L112.731 143.346L167.716 49.2762L155.295 27.9029L100.647 122.557Z" fill="url(#paint2_linear_401_490)"/> -<path d="M56.1866 48.9L112.25 144.735L125.498 121.789L83.4747 48.9L56.1866 48.9Z" fill="url(#paint3_linear_401_490)"/> -<path d="M100.647 122.557L113.255 100.72L125.498 121.789L112.25 144.735L99.36 122.553L100.647 122.557Z" fill="url(#paint4_linear_401_490)"/> -<path d="M155.295 27.9029L167.716 49.2762L180.964 26.3302L168.543 4.9569L155.295 27.9029Z" fill="url(#paint5_linear_401_490)"/> -<path d="M128.928 27.8264L155.294 27.9012L113.253 100.718L100.005 77.9217L128.928 27.8264Z" fill="url(#paint6_linear_401_490)"/> -<path d="M155.294 27.9012L168.543 4.95531L33.4173 4.57226L20.1694 27.5182L128.928 27.8264L155.294 27.9012Z" fill="url(#paint7_linear_401_490)"/> +<path d="M44.3533 27.9023L19.6331 27.8322L87.5304 144.667L112.251 144.737L44.3533 27.9023Z" fill="url(#paint0_linear_428_7666)"/> +<path d="M20.1687 27.5225L32.5895 48.8958L141.349 49.2039L128.928 27.8305L20.1687 27.5225Z" fill="url(#paint1_linear_428_7666)"/> +<path d="M100.647 122.557L112.731 143.346L167.716 49.2762L155.295 27.9029L100.647 122.557Z" fill="url(#paint2_linear_428_7666)"/> +<path d="M56.1866 48.9L112.25 144.735L125.498 121.789L83.4747 48.9L56.1866 48.9Z" fill="url(#paint3_linear_428_7666)"/> +<path d="M100.647 122.557L113.255 100.72L125.498 121.789L112.25 144.735L99.36 122.553L100.647 122.557Z" fill="url(#paint4_linear_428_7666)"/> +<path d="M155.295 27.9029L167.716 49.2762L180.964 26.3302L168.543 4.9569L155.295 27.9029Z" fill="url(#paint5_linear_428_7666)"/> +<path d="M128.928 27.8264L155.294 27.9012L113.253 100.718L100.005 77.9217L128.928 27.8264Z" fill="url(#paint6_linear_428_7666)"/> +<path d="M155.294 27.9012L168.543 4.95531L33.4173 4.57226L20.1694 27.5182L128.928 27.8264L155.294 27.9012Z" fill="url(#paint7_linear_428_7666)"/> <path d="M257.542 124.946L238.056 97.4266L217.847 124.946H210L234.264 91.9249L211.348 59.3535H223.71L241.662 84.7027L260.249 59.3535H268.096L245.454 90.3029L269.904 124.946H257.542Z" fill="#F8F8F8"/> <path d="M285.02 65.8404V59.7031H335.543V65.8404H315.246V125.295H305.317V65.8404H285.02Z" fill="#F8F8F8"/> <path d="M380.553 125.291L378.844 117.357C377.583 119.943 375.413 122.058 372.345 123.713C369.276 125.368 365.605 126.19 361.341 126.19C357.977 126.19 354.963 125.697 352.322 124.699C349.67 123.702 347.598 122.19 346.097 120.14C344.595 118.091 343.839 115.504 343.839 112.381C343.839 110.036 344.332 107.975 345.33 106.2C346.327 104.424 347.686 102.967 349.439 101.827C350.941 100.687 352.629 99.8105 354.492 99.2077C356.355 98.605 358.536 98.1666 361.034 97.9035C363.533 97.6296 366.492 97.4 [...] -<path d="M452.644 101.378C452.644 106.069 451.691 110.299 449.806 114.058C447.91 117.817 445.247 120.776 441.816 122.946C438.386 125.116 434.353 126.19 429.728 126.19C425.64 126.19 422.133 125.335 419.218 123.615C416.303 121.905 414.034 119.746 412.412 117.16L411.064 125.281H403.393V56.0938H412.412V85.5089C414.155 83.1088 416.577 81.0922 419.678 79.4593C422.78 77.8373 426.155 77.0263 429.827 77.0263C434.517 77.0263 438.561 78.0674 441.959 80.1387C445.356 82.2101 447.987 85.0815 449.85 88 [...] -<path d="M465.182 125.292V56.0938H474.202V125.292H465.182Z" fill="#F8F8F8"/> +<path d="M452.644 101.378C452.644 106.069 451.691 110.299 449.806 114.058C447.91 117.817 445.247 120.776 441.816 122.946C438.386 125.116 434.353 126.19 429.728 126.19C425.64 126.19 422.133 125.335 419.218 123.615C416.303 121.905 414.034 119.746 412.412 117.16L411.064 125.281H403.393V56.0938H412.412V85.5089C414.155 83.1088 416.577 81.0922 419.678 79.4593C422.78 77.8373 426.155 77.0263 429.827 77.0263C434.517 77.0263 438.561 78.0674 441.959 80.1387C445.356 82.2101 447.987 85.0815 449.85 88 [...] +<path d="M465.182 125.292V56.0938H474.201V125.292H465.182Z" fill="#F8F8F8"/> <path d="M533.383 109.586C533.383 113.378 532.331 116.501 530.226 118.967C528.122 121.433 525.382 123.252 522.018 124.425C518.653 125.598 515.069 126.189 511.278 126.189C506.225 126.189 501.863 125.192 498.192 123.208C494.521 121.225 491.693 118.397 489.709 114.726C487.726 111.054 486.729 106.725 486.729 101.739C486.729 96.8619 487.726 92.5658 489.709 88.8396C491.693 85.1134 494.488 82.2092 498.104 80.1378C501.71 78.0665 505.951 77.0254 510.828 77.0254C517.985 77.0254 523.64 79.0419 527. [...] -<path d="M335.742 42.2742C335.742 46.421 331.854 48.1705 327.707 48.1705C322.2 48.1705 318.604 44.8336 318.604 39.3261C318.604 33.9482 322.07 30.417 327.448 30.417C332.664 30.417 335.968 33.4947 335.968 38.7106C335.968 39.1965 335.936 39.6501 335.904 40.2008H322.912C323.139 43.2785 324.629 45.9999 327.707 45.9999C330.105 45.9999 331.53 44.6716 331.53 42.2742H335.742ZM327.448 32.5876C324.5 32.5876 323.204 35.1145 322.945 38.0626H331.854C331.854 34.9202 330.59 32.5876 327.448 32.5876Z" fil [...] -<path d="M301.932 38.4209V47.8484H297.753V23H301.932V33.4966C302.904 31.7795 304.88 30.4189 307.699 30.4189C312.137 30.4189 314.826 33.3346 314.826 37.8702V47.8484H310.679V38.2913C310.679 35.1812 309.157 33.2374 306.338 33.2374C303.552 33.2374 301.932 35.5376 301.932 38.4209Z" fill="#F8F8F8"/> +<path d="M335.741 42.2742C335.741 46.421 331.854 48.1705 327.707 48.1705C322.2 48.1705 318.604 44.8336 318.604 39.3261C318.604 33.9482 322.07 30.417 327.448 30.417C332.664 30.417 335.968 33.4947 335.968 38.7106C335.968 39.1965 335.936 39.6501 335.903 40.2008H322.912C323.139 43.2785 324.629 45.9999 327.707 45.9999C330.104 45.9999 331.53 44.6716 331.53 42.2742H335.741ZM327.448 32.5876C324.5 32.5876 323.204 35.1145 322.945 38.0626H331.854C331.854 34.9202 330.59 32.5876 327.448 32.5876Z" fil [...] +<path d="M301.932 38.4209V47.8484H297.753V23H301.932V33.4966C302.904 31.7795 304.88 30.4189 307.699 30.4189C312.137 30.4189 314.826 33.3346 314.826 37.8702V47.8484H310.679V38.2913C310.679 35.1812 309.156 33.2374 306.338 33.2374C303.552 33.2374 301.932 35.5376 301.932 38.4209Z" fill="#F8F8F8"/> <path d="M293.66 41.8207C293.66 45.9351 289.935 48.1705 285.464 48.1705C280.086 48.1705 276.652 44.7688 276.652 39.3909C276.652 34.0778 280.151 30.417 285.496 30.417C289.805 30.417 293.725 32.62 293.725 36.6048V36.9288H289.481C289.481 34.499 287.926 32.5876 285.496 32.5876C282.095 32.5876 280.961 35.9893 280.961 39.3909C280.961 42.7926 282.062 45.8703 285.464 45.8703C288.023 45.8703 289.384 44.0885 289.384 41.4967H293.66V41.8207Z" fill="#F8F8F8"/> -<path d="M269.43 47.8465L268.717 45.2224C267.875 46.9718 265.737 48.1705 262.659 48.1705C259.096 48.1705 256.504 46.583 256.504 43.2137C256.504 41.3347 257.411 40.0065 258.901 39.0993C260.586 38.0626 262.659 37.7711 265.964 37.7711C266.903 37.7711 267.875 37.8035 268.685 37.8359V36.3456C268.685 34.013 267.422 32.5876 265.121 32.5876C262.854 32.5876 261.525 33.7539 261.525 36.0216H257.443V35.6653C257.443 32.458 260.262 30.417 265.121 30.417C269.463 30.417 272.864 32.458 272.864 36.7992V47 [...] +<path d="M269.43 47.8465L268.718 45.2224C267.875 46.9718 265.737 48.1705 262.659 48.1705C259.096 48.1705 256.504 46.583 256.504 43.2137C256.504 41.3347 257.411 40.0065 258.901 39.0993C260.586 38.0626 262.659 37.7711 265.964 37.7711C266.903 37.7711 267.875 37.8035 268.685 37.8359V36.3456C268.685 34.013 267.422 32.5876 265.121 32.5876C262.854 32.5876 261.525 33.7539 261.525 36.0216H257.443V35.6653C257.443 32.458 260.262 30.417 265.121 30.417C269.463 30.417 272.864 32.458 272.864 36.7992V47 [...] <path d="M245.434 48.1705C242.519 48.1705 240.542 46.8746 239.571 45.2871V54.7794H235.391V30.741H239.052L239.538 33.5271C240.413 32.0368 242.162 30.417 245.434 30.417C250.553 30.417 253.631 34.337 253.631 39.3261C253.631 44.4124 250.488 48.1705 245.434 48.1705ZM244.398 32.8792C241.093 32.8792 239.571 35.9245 239.571 39.2289C239.571 42.6306 241.028 45.5463 244.462 45.5463C247.799 45.5463 249.322 42.5658 249.322 39.2289C249.322 35.9569 247.799 32.8792 244.398 32.8792Z" fill="#F8F8F8"/> <path d="M210 47.8494L218.488 24.2969H224.093L232.548 47.8494H227.527L225.356 41.6292H215.216L212.948 47.8494H210ZM216.155 39.005H224.449L220.367 27.3098L216.155 39.005Z" fill="#F8F8F8"/> +<path d="M538 117.984V117H544.888V117.984H542.284V125.724H540.592V117.984H538Z" fill="#F8F8F8"/> +<path d="M548.655 117L551.319 122.784L553.971 117H556.083V125.724H554.391V118.62L551.475 124.98H550.551L547.611 118.62V125.724H546.435V117H548.655Z" fill="#F8F8F8"/> </g> <defs> -<linearGradient id="paint0_linear_401_490" x1="120.254" y1="27.5464" x2="75.17" y2="149.156" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint0_linear_428_7666" x1="120.254" y1="27.5464" x2="75.17" y2="149.156" gradientUnits="userSpaceOnUse"> <stop offset="0.0370701" stop-color="#979696"/> <stop offset="0.403607" stop-color="#BBBBBB"/> <stop offset="1" stop-color="#7F7F7F"/> </linearGradient> -<linearGradient id="paint1_linear_401_490" x1="120.254" y1="27.5464" x2="75.17" y2="149.156" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint1_linear_428_7666" x1="120.254" y1="27.5464" x2="75.17" y2="149.156" gradientUnits="userSpaceOnUse"> <stop offset="0.0370701" stop-color="#979696"/> <stop offset="0.403607" stop-color="#BBBBBB"/> <stop offset="1" stop-color="#7F7F7F"/> </linearGradient> -<linearGradient id="paint2_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint2_linear_428_7666" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#B1B1B1"/> <stop offset="0.448809" stop-color="#D9D9D9"/> <stop offset="0.97652" stop-color="#B3B3B3"/> </linearGradient> -<linearGradient id="paint3_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint3_linear_428_7666" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#B1B1B1"/> <stop offset="0.448809" stop-color="#D9D9D9"/> <stop offset="0.97652" stop-color="#B3B3B3"/> </linearGradient> -<linearGradient id="paint4_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint4_linear_428_7666" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#B1B1B1"/> <stop offset="0.448809" stop-color="#D9D9D9"/> <stop offset="0.97652" stop-color="#B3B3B3"/> </linearGradient> -<linearGradient id="paint5_linear_401_490" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint5_linear_428_7666" x1="135.085" y1="-3.3035" x2="100.085" y2="158.052" gradientUnits="userSpaceOnUse"> <stop offset="0.0774246" stop-color="#B1B1B1"/> <stop offset="0.448809" stop-color="#D9D9D9"/> <stop offset="0.97652" stop-color="#B3B3B3"/> </linearGradient> -<linearGradient id="paint6_linear_401_490" x1="19.9997" y1="3.22043" x2="136.864" y2="80.339" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint6_linear_428_7666" x1="19.9997" y1="3.22043" x2="136.864" y2="80.339" gradientUnits="userSpaceOnUse"> <stop stop-color="white"/> <stop offset="1" stop-color="#EAEAEA"/> </linearGradient> -<linearGradient id="paint7_linear_401_490" x1="19.9997" y1="3.22043" x2="136.864" y2="80.339" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint7_linear_428_7666" x1="19.9997" y1="3.22043" x2="136.864" y2="80.339" gradientUnits="userSpaceOnUse"> <stop stop-color="white"/> <stop offset="1" stop-color="#EAEAEA"/> </linearGradient> -<clipPath id="clip0_401_490"> -<rect width="554" height="150" fill="white"/> +<clipPath id="clip0_428_7666"> +<rect width="560" height="150" fill="white"/> </clipPath> </defs> </svg> diff --git a/website/static/images/xtable-white.png b/website/static/images/xtable-white.png index fd87e6ba..63e16d00 100644 Binary files a/website/static/images/xtable-white.png and b/website/static/images/xtable-white.png differ diff --git a/website/static/images/xtable-words-white.png b/website/static/images/xtable-words-white.png index 7021d96b..72000847 100644 Binary files a/website/static/images/xtable-words-white.png and b/website/static/images/xtable-words-white.png differ diff --git a/website/static/images/xtable-words.png b/website/static/images/xtable-words.png index f1401beb..fe600e0a 100644 Binary files a/website/static/images/xtable-words.png and b/website/static/images/xtable-words.png differ diff --git a/website/static/images/xtable.png b/website/static/images/xtable.png index 43554889..afb6984a 100644 Binary files a/website/static/images/xtable.png and b/website/static/images/xtable.png differ diff --git a/website/static/index.html b/website/static/index.html index c9fa1f21..b2407217 100644 --- a/website/static/index.html +++ b/website/static/index.html @@ -3,13 +3,13 @@ <html data-wf-page="65402b66d39d6454e51fabf1" data-wf-site="65402b66d39d6454e51fabed"> <head> <meta charset="utf-8"> - <title>XTable</title> - <meta content="XTable is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata." name="description"> - <meta content="XTable" property="og:title"> - <meta content="XTable is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata." property="og:description"> + <title>Apache XTable™</title> + <meta content="Apache XTable™ is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. Apache XTable™ is NOT a new or separate format, Apache XTable™ provides abstractions and tools for the translation of lakehouse table format metadata." name="description"> + <meta content="Apache XTable™" property="og:title"> + <meta content="Apache XTable™ is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. Apache XTable™ is NOT a new or separate format, Apache XTable™ provides abstractions and tools for the translation of lakehouse table format metadata." property="og:description"> <meta content="https://uploads-ssl.webflow.com/65402b66d39d6454e51fabed/654c643bf9cebe95d6c3dd50_Group%201562%20(1).png" property="og:image"> - <meta content="XTable" property="twitter:title"> - <meta content="XTable is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata." property="twitter:description"> + <meta content="Apache XTable™" property="twitter:title"> + <meta content="Apache XTable™ is a cross-table interop of lakehouse table formats Apache Hudi, Apache Iceberg, and Delta Lake. Apache XTable™ is NOT a new or separate format, Apache XTable™ provides abstractions and tools for the translation of lakehouse table format metadata." property="twitter:description"> <meta content="https://uploads-ssl.webflow.com/65402b66d39d6454e51fabed/654c643bf9cebe95d6c3dd50_Group%201562%20(1).png" property="twitter:image"> <meta property="og:type" content="website"> <meta content="summary_large_image" name="twitter:card"> @@ -74,7 +74,7 @@ </section> <section class="callout-section"> <div class="w-layout-blockcontainer container-main w-container"> - Apache XTable is incubating in the Apache Software Foundation and was recently renamed from OneTable + Apache XTable™ is incubating in the Apache Software Foundation and was recently renamed from OneTable </div> </section> <section class="logo-section"> @@ -90,11 +90,11 @@ <section class="what-section"> <div class="w-layout-blockcontainer main-container-why w-container"> <div class="up-section-why"> - <h1 class="heading-section why">What is<span class="text-span"> XTable?</span></h1> + <h1 class="heading-section why">What is<span class="text-span"><br /> Apache XTable™?</span></h1> <ul role="list" class="list"> - <li class="list-item why">XTable provides cross-table omni-directional interop between lakehouse table formats</li> - <li class="list-item why">XTable is NOT a new or separate format, XTable provides abstractions and tools for the translation of lakehouse table format metadata</li> - <li class="list-item why">XTable is formerly known as OneTable</li> + <li class="list-item why">Apache XTable™ provides cross-table omni-directional interop between lakehouse table formats</li> + <li class="list-item why">Apache XTable™ is NOT a new or separate format, Apache XTable™ provides abstractions and tools for the translation of lakehouse table format metadata</li> + <li class="list-item why">Apache XTable™ is formerly known as OneTable</li> </ul> </div> <div id="w-node-b5fb012b-3ce1-44e6-09e8-015167aa018f-e51fabf1" class="w-layout-layout quick-stack wf-layout-layout"> @@ -105,7 +105,7 @@ <div class="what-text">Choose your <span class="text-span-3">destination</span> format(s)</div> </div> <div id="w-node-a5b4b7dd-251e-d9a7-855d-46427e19ad9b-e51fabf1" class="w-layout-cell what-cell"><img src="images/metadata-1.png" loading="lazy" alt="" class="image-4"> - <div class="what-text">XTable will translate the <span class="text-span-3">Metadata</span> layers</div> + <div class="what-text">Apache XTable™ will translate the <span class="text-span-3">Metadata</span> layers</div> </div> </div> </div> @@ -113,7 +113,7 @@ <section class="build-section"> <div class="w-layout-blockcontainer main-container w-container"> <div class="left-section"> - <h1 class="heading-section">Why <span class="text-span">build</span> XTable?</h1> + <h1 class="heading-section">Why <span class="text-span">build</span><br /> Apache XTable™?</h1> <ul role="list" class="list"> <li class="list-item">Choosing a table format is a costly evaluation</li> <li class="list-item">Each project has rich features that may fit different use-cases</li> @@ -130,7 +130,7 @@ <div class="div-block-24"> <div class="right-section-together"> <h1 class="heading-section-together">Let's <span class="text-span">build together</span></h1> - <div class="text-block">XTable is a community driven open source project. Come join us on Github and find easy ways to contribute.</div> + <div class="text-block">Apache XTable™ is a community driven open source project. Come join us on Github and find easy ways to contribute.</div> </div> <a href="https://github.com/apache/incubator-xtable" class="primary-button w-button">Try it on GitHub</a> </div> @@ -149,34 +149,34 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">XTable reads the existing metadata of your table and writes out metadata for one or more other table formats by leveraging the existing APIs provided by each table format project. The metadata will be persisted under a directory in the base path of your table (_delta_log for Delta, metadata for Iceberg, and .hoodie for Hudi). This allows your existing data to be read as though it was written using Delta, Hudi, or Iceberg. For example, a Spark reader can use s [...] + <p class="faq-a">Apache XTable™ reads the existing metadata of your table and writes out metadata for one or more other table formats by leveraging the existing APIs provided by each table format project. The metadata will be persisted under a directory in the base path of your table (_delta_log for Delta, metadata for Iceberg, and .hoodie for Hudi). This allows your existing data to be read as though it was written using Delta, Hudi, or Iceberg. For example, a Spark reader c [...] </div> </div> <div class="accordion-item"> <div id="q1" class="accordion-item-trigger"> - <h4 class="accordion-heading"><span><strong class="faq-q">How is XTable different from Delta Lake Uniform?</strong></span></h4> + <h4 class="accordion-heading"><span><strong class="faq-q">How is Apache XTable™ different from Delta Lake Uniform?</strong></span></h4> <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">XTable provides abstraction interfaces that allow omni-directional interoperability across Delta, Hudi, Iceberg, and any other future lakehouse table formats such as Apache Paimon. XTable is a standalone github project that provides a neutral space for all the lakehouse table formats to constructively collaborate together.<br><br>Delta Lake Uniform is a one-directional conversion from Delta Lake to Apache Hudi or Apache Iceberg. Uniform is also governed insid [...] + <p class="faq-a">Apache XTable™ provides abstraction interfaces that allow omni-directional interoperability across Delta, Hudi, Iceberg, and any other future lakehouse table formats such as Apache Paimon. Apache XTable™ is a standalone github project that provides a neutral space for all the lakehouse table formats to constructively collaborate together.<br><br>Delta Lake Uniform is a one-directional conversion from Delta Lake to Apache Hudi or Apache Iceberg. Uniform is als [...] </div> </div> <div class="accordion-item"> <div id="q1" class="accordion-item-trigger"> - <h4 class="accordion-heading"><span><strong class="faq-q">When should I consider XTable?</strong></span></h4> + <h4 class="accordion-heading"><span><strong class="faq-q">When should I consider Apache XTable™?</strong></span></h4> <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">XTable can be used to easily switch between any of the table formats or even benefit from more than one simultaneously. Some organizations use XTable today because they have a diverse ecosystem of tools with polarized vendor support of table formats. Some users want lightning fast ingestion or indexing from Hudi and photon query accelerations of Delta Lake inside of Databricks. Some users want managed table services from Hudi, but also want write operations f [...] + <p class="faq-a">Apache XTable™ can be used to easily switch between any of the table formats or even benefit from more than one simultaneously. Some organizations use Apache XTable™ today because they have a diverse ecosystem of tools with polarized vendor support of table formats. Some users want lightning fast ingestion or indexing from Hudi and photon query accelerations of Delta Lake inside of Databricks. Some users want managed table services from Hudi, but also want wr [...] </div> </div> <div class="accordion-item"> <div id="q1" class="accordion-item-trigger"> - <h4 class="accordion-heading"><span><strong class="faq-q">Does XTable work in every cloud?</strong></span></h4> + <h4 class="accordion-heading"><span><strong class="faq-q">Does Apache XTable™ work in every cloud?</strong></span></h4> <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">Yes, anywhere that Delta, Iceberg, or Hudi work, XTable works.</p> + <p class="faq-a">Yes, anywhere that Delta, Iceberg, or Hudi work, Apache XTable™ works.</p> </div> </div> <div class="accordion-item"> @@ -185,7 +185,7 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">1. Hudi and Iceberg MoR tables not supported<br>2. Delta Delete Vectors are not supported<br>3. Synchronized transaction timestamps<br><br>With XTable you pick one primary format and one or more secondary formats. The write operations with the primary format work as normal. XTable than translates the metadata from the primary format to the secondaries. When committing the metadata of the secondary formats, the timestamp of the commit will not be the exact sam [...] + <p class="faq-a">1. Hudi and Iceberg MoR tables not supported<br>2. Delta Delete Vectors are not supported<br>3. Synchronized transaction timestamps<br><br>With Apache XTable™ you pick one primary format and one or more secondary formats. The write operations with the primary format work as normal. Apache XTable™ than translates the metadata from the primary format to the secondaries. When committing the metadata of the secondary formats, the timestamp of the commit will not [...] </div> </div> <div class="accordion-item"> @@ -203,7 +203,7 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">Follow XTable community channels on Linkedin and Twitter. Become a watcher on Github or reachout directly to any of the Github contributors to learn more.</p> + <p class="faq-a">Follow Apache XTable™ community channels on Linkedin and Twitter. Become a watcher on Github or reachout directly to any of the Github contributors to learn more.</p> </div> </div> <div class="accordion-item"> @@ -212,7 +212,7 @@ <div class="icon-2 accordion-icon">keyboard_arrow_down</div> </div> <div class="accordion-item-content"> - <p class="faq-a">Current contributors across Onehouse, Microsoft, Google, and others are planning to incubate XTable into the Apache Software Foundation. Stay tuned for more updates.</p> + <p class="faq-a">Current contributors across Onehouse, Microsoft, Google, and others are helping to incubate Apache XTable™ into the Apache Software Foundation. Stay tuned for more updates.</p> </div> </div> </div> @@ -231,8 +231,8 @@ <div class="footer__bottom text--center"><div class="footer__copyright" style="color: white;text-align: center;"> <div style="margin-top: 20px"> <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/images/apache-incubator.svg"></a> - <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache XTable is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the c [...] - <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2024 Apache XTable, XTable, Apache, the Apache feather logo and the Apache XTable project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p> + <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache XTable™ is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the [...] + <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2024 Apache XTable™, XTable, Apache, the Apache feather logo and the Apache XTable™ project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p> </div> </div> </div>
