问题标签 [iceberg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
447 浏览

apache-flink - flink:在等待数据被管道确认时中断

我正在做一个 flink CDC + iceberg 的 POC。我按照这个 debezium 教程将 cdc 发送到 kafka - https://debezium.io/documentation/reference/1.4/tutorial.html。我的 flink 工作运行良好,并将数据写入配置单元表以进行插入。但是当我向 mysql 表发起更新/删除查询时,我开始在我的 flink 作业中收到此错误。我还附加了撤回流的输出

更新查询 -UPDATE customers SET first_name='Anne Marie' WHERE id=1004;

错误堆栈跟踪

这是我的代码,topic_customers是正在监听 cdc 事件的 Kafka 动态表

0 投票
0 回答
230 浏览

hive - 'java.lang.VerifyError: Stack map does not match the one at exception handler 70' while using sql-client of flink with iceberg-runtime and hive

根据https://iceberg.apache.org/flink/,我使用 flink 的 sql-client 选项 -j

bin/sql-client.sh embedded -j lib/flink-sql-connector-hive-2.3.6_2.11-1.11.3.jar -j lib/iceberg-flink-runtime-0.11.0.jar shell

并满足以下例外:

这似乎是 jar 版本出了点问题。

经过尝试不同的 hive 版本的 flink 版本,仍然遇到同样的问题。

0 投票
2 回答
92 浏览

sql - 如何在 SQL 中解构 Struct

我在表(格式)中有一个结构,Iceberg Database我想扩展该结构的所有子级。

正常查询如下所示:

取而代之的是,我想发表如下声明:(不起作用-只是一个想法)

那会回来

el1 el2 el3

有可能实现这样的说法吗?在现实生活中,我喜欢数百个元素,不想把它们都写下来。

如果我做提议的(不工作的)声明。它返回如下内容:

col1
(一二三)
0 投票
1 回答
272 浏览

apache-spark - Apache Spark UDF:访问冰山

我试图从 Spark Java UDF 中访问 Iceberg 表,但在 UDF 中运行第一条 SQL 语句时出现错误。以下是我在 UDF 中创建 Spark 会话的方法:

这是引发异常的语句:

我注意到 Spark 配置中的环境变量 (RuntimeConfig config = spark.conf();) 在 UDF 中创建的 Spark 会话中与我调用的 Jupyter 笔记本中定义的值不同UDF。我想知道为什么。

这是我在日志中看到的异常:

我不确定在 UDF 中创建 Spark 会话是否有效。有没有办法让 UDF 中的 Spark 会话与在调用 UDF 的 Jupyter 笔记本中创建的 Spark 会话相同?

马丁

0 投票
2 回答
730 浏览

azure - 如何在 Databricks 中的 Iceberg 表上执行 Spark SQL 合并语句?

我试图在我们的 Databricks 环境中设置 Apache Iceberg,并MERGE在 Spark SQL 中执行语句时遇到错误。

这段代码:

生成此错误:

我相信问题的根源在于这MERGE也是 Delta Lake SQL 引擎的关键字。据我所知,这个问题源于 Spark 尝试执行计划的顺序。MERGE触发增量规则,然后抛出错误,因为它不是增量表。我能够毫无问题地读取、附加和覆盖冰山表。

主要问题:如何让 Spark 将其识别为 Iceberg 查询而不是 Delta?或者是否可以完全删除与 delta 相关的 SQL 规则?

环境

火花版本:3.0.1

Databricks 运行时版本:7.6

冰山配置

堆栈跟踪:

0 投票
1 回答
548 浏览

apache-spark - Apache Iceberg 无法使用 Spark 在表中写入数据

我是 Apache Iceberg 的新手。我想使用 Apache Iceberg 执行读写操作。我正在使用 Spark 3.0.0。

代码:

依赖列表:

异常消息:

我是否需要任何其他依赖项来启用 MessageType 强制转换。

0 投票
0 回答
387 浏览

apache-spark - Issue with Apache Hudi Update and Delete Operation on Parquet S3 File

Here I am trying to simulate updates and deletes over a Hudi dataset and wish to see the state reflected in Athena table. We use EMR, S3 and Athena services of AWS.

  1. Attempting Record Update with a withdrawal object

Shows the updated record but it is actually appended in the Athena table. Probably something to do with Glue Catalogue?

  1. Attempting Record Delete

still reflects the deleted record in the Athena table

Also tried using mode("overwrite") but as expected it deletes the older partitions and keeps only the latest.

Did anyone faced same issue and can guide in the right direction

0 投票
1 回答
74 浏览

amazon-s3 - Apache Iceberg 索引 AWS S3

我有一个用例,在 S3 上存储了大约 100M 个文件。根据我的数据模型,我有一个清单文件分别用于这些文件的位置。我想了解 Apache Iceberg 是否适合为我的 S3 文件提供索引。

阅读Iceberg Documentation,似乎它谈到了创建一个表,其中一列是目标 S3 位置。如果是这种情况,它与我存储 S3 路径和与我的模型相关的其他列的普通关系表有何不同。

人们在 Iceberg 中使用 S3 索引的任何指针或示例都会有所帮助。

0 投票
0 回答
94 浏览

hive - 如何为 apache 冰山表选择分区键

我有许多蜂巢仓库。数据位于 Amazon S3 的 parquet 文件中。一些表包含 TB 的数据。目前在 Hive 中,大多数表都按月和年的组合进行分区,两者都主要保存为字符串。其他字段是 bigint、int、float、double、string 和 unix 时间戳。我们的目标是将它们迁移到 apache 冰山表。挑战在于如何选择分区键。

我已经通过以下方式计算了每个表中每个字段的基数:

我还计算了每个字段的空值百分比:

简而言之,我已经知道每个领域的三件事:

  1. 数据类型
  2. 基数
  3. 空值的百分比

通过了解这三个信息,我的问题是如何选择最佳列或列组合作为未来冰山表的分区键?有什么经验法则吗?

选择分区键时,多少个分区被认为是优化的?选择分区键时哪种数据类型最好?还有哪些需要考虑的因素?在冰山表中分桶是否与在 hive 中相同,以及如何通过分区键来利用它?哪些数据类型最适合分区键?有很多小分区好还是有几个大分区好?需要考虑的分区键中的任何其他方面?

0 投票
0 回答
82 浏览

amazon-athena - 雅典娜冰山在空桌子上慢

我正在查看 AWS Athena 的新冰山表。我希望将我的数据湖转移到 Iceberg,这样我就可以显着降低表分区管理的复杂性,并希望获得更好的性能。我创建了一个包含两个字段的测试冰山表:event_datelog.

这会在ACME中创建一个带有元数据等的新 S3 前缀。我查询这个新的空表需要 14 秒才能产生 0 个结果。

我用 20 个样本行加载它:

为了更好地衡量,在其上运行他们的“OPTIMIZE”命令,我认为它只会进行压缩,但认为它也可能会运行一些分区发现。

但是在这里返回我的 20 行仍然需要 14 秒。看起来我没有正确配置我的表并且它没有有效地使用分区。我什至尝试添加一个完全超出我提供的样本数据范围的分区谓词:

仍然需要14s。

我不确定除了注册分区之外我还应该做什么。为什么我的冰山表没有使用已知的分区元?我怎样才能让 Iceberg 做一些分区发现?