java 如何使用Delta Lake Standalone创建Delta表并写入数据

bjg7j2ky  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(241)

我能够读取使用独立API在Amazon S3中创建的增量表,但无法创建增量表并向其中插入数据。在下面的三角洲湖链接中,提到使用Zappy阅读器和作家,这是虚构的,用作参考。
我尝试使用avro parquet writer,但在获取AddFile对象所需的所有数据时遇到了问题,您能分享一些可以在scala中使用的writer示例以及如何将 meta数据提交到delta table中吗?
https://docs.delta.io/latest/delta-standalone.html#-azure-blob-storage

ZappyDataFrame correctedSaleIdToTotalCost = ...;
ZappyDataFrame invalidSales = ZappyReader.readParquet(filteredFiles);
ZappyDataFrame correctedSales = invalidSales.join(correctedSaleIdToTotalCost, "id")

ZappyWriteResult dataWriteResult = ZappyWritter.writeParquet("/data/sales", correctedSales);

请注意,这个例子使用了一个虚构的非Spark引擎Zappy来写入实际的parquet数据,因为Delta Standalone不提供任何数据写入API。相反,Delta Standalone Writer允许您在写入数据后将元数据提交到Delta日志。
使用的依赖关系- pom.xml

<dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>2.12.12</version>
  </dependency>

 <dependency>
      <groupId>io.delta</groupId>
      <artifactId>delta-standalone_2.12</artifactId>
      <version>0.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>3.3.1</version>
    </dependency>

我尝试使用avro parquet writer,但在获取AddFile对象所需的所有数据时遇到了问题,您能分享一些可以在scala中使用的writer示例以及如何将 meta数据提交到delta table中吗?

sczxawaw

sczxawaw1#

据我所知,Delta Standalone似乎不支持Delta Table的实际创建。从文档中,我们可以看到它们声明:
DeltaStandalone库是一个单节点Java库,可用于读取和写入Delta表
这是一个真实的的耻辱,而且限制了独立库的功能。例如,如果我们查看支持的Hive连接器,我们可以在README file中看到以下内容:
现在连接器只支持EXTERNALHive表。Delta表必须使用Spark创建,然后外部Hive表才能引用它。
delta-rs Rust实现完全支持编写Delta表并与之交互。

相关问题