---
title: DataStream算子和UDF支持情况
description: "介绍在Flink 1.16.3引擎下，OmniStream Flink Native化特性对DataStream算子及用户自定义函数（UDF）的支持范围、限制条件与性能影响。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0924.html
sourcePath: /source/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0924.html
indexId: 3a2b977345d01df718bf7b003b1a16191a59cb5923da46c3b607dd338e667bed78
---
# DataStream算子和UDF支持情况

介绍在Flink 1.16.3引擎下，OmniStream Flink Native化特性对DataStream算子及用户自定义函数（UDF）的支持范围、限制条件与性能影响。

如果使用OmniStream Flink Native化特性不支持的DataStream算子和UDF，会导致执行计划回退为原生执行，对性能会有影响。


- OmniStream Flink Native化特性支持的DataStream算子包括Kafka Source、Kafka Sink、Map、Reduce、FlatMap和Filter。
- 从数据传输对象、Function类型、UDF依赖类及接口、Java类型翻译和Java语句翻译多个维度给出支持的UDF白名单，请参见  支持的UDF白名单
。

#### 支持的UDF白名单

支持的数据传输对象包括Long、String和Tuple2<String, Long>。

支持的依赖类及接口如表1所示，其余约束请参见UDF翻译工具用户指南(https://gitee.com/openeuler/docs/blob/stable-24.03_LTS_SP2/docs/zh/server/development/unt/unt_guide.md#约束与限制)。环境配置不同可能会导致支持的表达式略有变化，如有差异，请联系华为一线工程师确认。


**表1 支持的表达式列表**

| Java类 | Java类接口 |
| --- | --- |
| Arrays | static <T> List<T> asList(Array) |
| HashMap（存取的元素均需要实现hashCode和equals方法） | Object get(Object key) |
| HashMap（存取的元素均需要实现hashCode和equals方法） | Object put(Object key, Object value) |
| HashMap（存取的元素均需要实现hashCode和equals方法） | void putAll(HashMap m) |
| HashMap（存取的元素均需要实现hashCode和equals方法） | boolean containsKey(Object key) |
| HashMap（存取的元素均需要实现hashCode和equals方法） | int size() |
| HashMap（存取的元素均需要实现hashCode和equals方法） | bool remove(Object key)（与Java接口不同，当前不支持使用变量承接返回值。） |
| HashMap（存取的元素均需要实现hashCode和equals方法） | Set<Map.Entry<Object,Object>> entrySet() |
| HashMap（存取的元素均需要实现hashCode和equals方法） | Set<Object> keySet() |
| HashMap（存取的元素均需要实现hashCode和equals方法） | HashMap clone() |
| Iterator | boolean hasNext() |
| Iterator | Object next() |
| ArrayList | Object get(int index) |
| ArrayList | void clear() |
| ArrayList | void add(Object e) |
| ArrayList | Iterator iterator() |
| ArrayList | boolean contains(Object o) |
| ArrayList | int size() |
| ArrayList | boolean isEmpty() |
| LinkedList | Object getFirst() |
| LinkedList | Object getLast() |
| LinkedList | void addLast(Object e) |
| LinkedList | void addFirst(Object e) |
| Map.Entry（mapentry中的元素需实现hash和equals方法） | Object getKey() |
| Map.Entry（mapentry中的元素需实现hash和equals方法） | Object getValue() |
| Map.Entry（mapentry中的元素需实现hash和equals方法） | void setValue(Object value)（与Java接口不同，当前不支持使用变量承接返回值。） |
| HashSet（存取的元素需要实现hash和equals方法） | boolean addAll(ArrayList list) |
| HashSet（存取的元素需要实现hash和equals方法） | boolean add(Object e) |
| HashSet（存取的元素需要实现hash和equals方法） | boolean remove(Object o) |
| HashSet（存取的元素需要实现hash和equals方法） | boolean contains(Object o) |
| HashSet（存取的元素需要实现hash和equals方法） | int size() |
| HashSet（存取的元素需要实现hash和equals方法） | void clear() |
| HashSet（存取的元素需要实现hash和equals方法） | Iterator iterator() |
| StringBuilder | StringBuilder append(String str) |
| StringBuilder | String toString() |
| 数组（当前只支持对象类型一维数组，不支持基本类型数组及多维数组。） | 大小 |
| 数组（当前只支持对象类型一维数组，不支持基本类型数组及多维数组。） | 取元素 |
| 数组（当前只支持对象类型一维数组，不支持基本类型数组及多维数组。） | 存元素（只支持顺序存元素） |
| Integer | String toString() |
| Integer | bool equals(Integer \*obj) override |
| Integer | int intValue() |
| Integer | static Integer valueOf(String s) |
| Integer | static Integer valueOf(int i) |
| Boolean | static Boolean valueOf(boolean b) |
| Boolean | boolean booleanValue() |
| Long | int hashCode() |
| Long | boolean equals(Long obj) |
| Long | String toString() |
| Long | Long clone() |
| Long | long longValue() |
| Long | static Long valueOf(String s) |
| Long | static Long valueOf(long l) |
| Object | int hashCode() |
| Object | bool equals(Object \*obj) |
| Object | String toString() |
| Object | Object \*clone() |
| String | int hashCode() |
| String | boolean equals(String anObject) |
| String | String toString() |
| String | Object \*clone() |
| String | String replace(String target, String replacement) |
| String | String[] split(String regex)（暂时只支持字符串的split，不支持正则表达式。） |
| String | String replaceAll(String regex, String replacement) |
| String | int lastIndexOf(String str) |
| String | int length() |
| String | String substring(int beginIndex) |
| String | String substring(int beginIndex, int endIndex) |
| String | boolean contains(String s) |
| String | boolean endsWith(String suffix) |
| String | boolean startsWith(String prefix) |
| Gson | String toJson(HashMap<String,String> map) |
| Gson | Map fromJson(String json, Type typeOf)（只支持将String类型转为Map。） |
| JsonObject | JsonObject getAsJsonObject(String memberName)（只支持String常量。） |
| JsonParser | static JsonObject parseString(String json) |
| JsonPrimitive | boolean getAsBoolean() |
| JsonElement | JsonObject getAsJsonObject() |
| JsonElement | double getAsDouble() |
| JsonElement | float getAsFloat() |
| JsonElement | int getAsInt() |
| JsonElement | long getAsLong() |
| JsonElement | short getAsShort() |
| JsonElement | boolean getAsBoolean() |
| JsonElement | String getAsString() |
| JsonElement | boolean isJsonNull() |
| JsonElement | String toString() |
| JsonElement | String toString() |
| JsonArray | Iterator<JsonElement> iterator() |
