flink table API交叉表引用

bis0qfac  于 2023-09-28  发布在  Apache
关注(0)|答案(1)|浏览(121)

我们有两份申请

  1. app 1创建两个表,即sourceTable和targetTable 1。它确实从sourceTable到targetTable 1选择 *。这两个都是基于Kafka主题创建的
  2. App 2在上面创建的targetTable 1的Kafka主题上创建了一个sourceTable 2。然后创建另一个targetTable 2。从targetTable 1到targetTable 2是否执行相同的查询即select *
    这是在aws kinesis data analytics的zeppline notebook中以sql查询的形式编写的。我们通过zeppline构建和部署,它工作得很好
    之后,我们从s3的构建包中获取python代码。通过CI/CD进行构建和部署。app 1工作正常,但是app 2抛出一个错误,说对象targetTable 1找不到。此表在另一个应用程序中创建。不知道为什么它的工作时,部署通过zeppline,但不是通过我们的CI/CD。有什么想法吗?
    我们尝试在app 2中再次创建targetTable 1并进行部署。效果很好。问题是只有当我们必须访问在另一个应用程序中创建的表。
tyky79it

tyky79it1#

在部署app1和app2的情况下,targetTable1由app1定义并存储在其临时内存中的目录中。app2无权访问此目录。
您可以将targetTable1存储在一个持久的外部目录中(我相信zeppelin使用了hive),或者您也可以让app2创建targetTable1。这是可行的,因为targetTable1只是Flink SQL应该如何解释一些底层Kafka主题中的数据的描述。app1和app2都需要这个元数据来描述如何使用来自Kafka的外部数据。它们可以通过外部目录共享此描述,也可以各自拥有相同表描述的副本。

相关问题