我正在使用flink sql从Kafka中读取数据,kafka消息中有一个字段是array,例如
{
"description": "som description",
"owner": {
"type": "some",
"id": "5ff4eb4fed9b4b1288d7993944a8ca23"
},
"someArray": [
{
"type": "foo",
"id": "c31a2d10134146e29726fb87246b68d0"
},
{
"type": "foo1",
"id": "c31a2d10134146e29726fb87246b68d0"
}
]
}
我想编写类似于select description, size_of(someArray) from some_table;
选择语句
Flink没有size_of
函数。我可以使用一些内置函数得到someArray
的长度吗?在这个例子中是2
。
我曾尝试为此编写UDF,使用UDF时遇到的挑战是,当使用sql-gateway执行查询时,我会在UDF类(它是一个Java类)上遇到类未找到异常。当我尝试使用cli sql-client
时,我可以使UDF工作。在我的计算机上运行/usr/local/Cellar/apache-flink/1.16.0/libexec/lib
时,我已将包含UDF的jar添加到/usr/local/Cellar/apache-flink/1.16.0/libexec/lib
1条答案
按热度按时间ewm0tg9j1#
可以使用内置的系统函数
CARDINALITY
来获取数组的长度,如下所示:有关表API中的集合函数的更多信息,请查看文档。