上下文:我们有一个flink应用程序,它使用来自Kafka的数据并将数据汇到Scylla DB上
应用启动时出现Schema解析错误
为什么我们会得到这个错误?
Flink版本:**1.15.4
Scylla DB版本:**scylla-enterprise-2022.2.11-0
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-cassandra_2.12</artifactId>
<version>1.15.4</version>
</dependency>
WARNING: All illegal access operations will be denied in a future release
2023-08-11 09:16:04.567 [Source: Custom Source -> Map -> Sink: Cassandra Sink (7/9)#0] ERROR com.datastax.driver.core.SchemaParser - Error parsing schema for table system_distributed.service_levels: Cluster.getMetadata().getKeyspace("system_distributed").getTable("service_levels") will be missing or incomplete
com.datastax.driver.core.exceptions.UnresolvedUserTypeException: Cannot resolve user type system_distributed.duration
at com.datastax.driver.core.DataTypeCqlNameParser.parse(DataTypeCqlNameParser.java:147)
at com.datastax.driver.core.TableMetadata.build(TableMetadata.java:188)
at com.datastax.driver.core.SchemaParser.buildTables(SchemaParser.java:176)
at com.datastax.driver.core.SchemaParser.buildKeyspaces(SchemaParser.java:128)
at com.datastax.driver.core.SchemaParser.refresh(SchemaParser.java:64)
at com.datastax.driver.core.ControlConnection.refreshSchema(ControlConnection.java:341)
at com.datastax.driver.core.ControlConnection.tryConnect(ControlConnection.java:271)
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:199)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:77)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1414)
任何输入都会有帮助
2条答案
按热度按时间kyks70gy1#
Cannot resolve user type system_distributed.duration
消息表示底层驱动程序不知道duration
类型。至少将驱动程序升级到v3.2.0,这是支持持续时间的初始版本。请注意,最新的Java驱动程序已经是v4.17了,所以如果Flink已经支持新的驱动程序API,那么最好切换到v4.x。
arknldoa2#
有趣的是,从你发布的堆栈跟踪中看到,Cassandra连接器使用的Java驱动程序不知道如何处理
duration
类型:所以我必须检查连接器使用的是哪个版本。
我非常惊讶地发现Flink 1.15.4中的Cassandra连接器使用的是Cassandra Java驱动程序v3.0.0:
该版本的Java驱动程序是released all the way back to January 2016。对
duration
类型的支持在一年后被添加到Java驱动程序中(JAVA-1347)。Flink 1.16.0中的Cassandra连接器使用Java驱动程序3.11.2(released in April 2022),它支持
duration
类型。请注意,Cassandra连接器已从Flink树中移出,并移到专用的存储库flink-connector-cassandra(FLINK-29982)中。干杯!干杯!