DataStream算子和UDF支持情况
介绍在使用OmniStream Flink Native化特性时,支持的DataStream算子和UDF。

- 本节描述OmniStream Flink Native化特性支持的DataStream算子和UDF仅针对Flink 1.16.3引擎。
- 从数据传输对象、Function类型、UDF依赖类及接口、Java类型翻译和Java语句翻译多个维度给出了支持的UDF白名单。
- 如果使用OmniStream Flink Native化特性不支持的DataStream算子和UDF,会导致执行计划回退为原生执行,对性能会有一定的影响。
支持DataStream算子
OmniStream Flink Native化特性支持的DataStream算子情况如下:
- Kafka Source
- Kafka Sink
- Map
- Reduce
- FlatMap
- Filter
支持的UDF白名单
支持的数据传输对象如下:
- Long
- String
- Tuple2<String, Long>
支持的依赖类及接口如表1所示,其余约束请参见UDF翻译工具用户指南。环境配置不同可能会导致支持的表达式略有变化,如有异同请联系华为一线工程师确认。
Java类 |
Java类接口 |
---|---|
Arrays |
static <T> List<T> asList(Array) |
HashMap(存取的元素均需要实现hashCode和equals方法) |
Object get(Object key) |
Object put(Object key, Object value) |
|
void putAll(HashMap m) |
|
boolean containsKey(Object key) |
|
int size() |
|
bool remove(Object key)(与Java接口不同,当前不支持使用变量承接返回值。) |
|
Set<Map.Entry<Object,Object>> entrySet() |
|
Set<Object> keySet() |
|
HashMap clone() |
|
Iterator |
boolean hasNext() |
Object next() |
|
ArrayList |
Object get(int index) |
void clear() |
|
void add(Object e) |
|
Iterator iterator() |
|
boolean contains(Object o) |
|
int size() |
|
boolean isEmpty() |
|
LinkedList |
Object getFirst() |
Object getLast() |
|
void addLast(Object e) |
|
void addFirst(Object e) |
|
Map.Entry(mapentry中的元素需实现hash和equals方法) |
Object getKey() |
Object getValue() |
|
void setValue(Object value)(与Java接口不同,当前不支持使用变量承接返回值) |
|
HashSet(存取的元素需要实现hash和equals方法) |
boolean addAll(ArrayList list) |
boolean add(Object e) |
|
boolean remove(Object o) |
|
boolean contains(Object o) |
|
int size() |
|
void clear() |
|
Iterator iterator() |
|
StringBuilder |
StringBuilder append(String str) |
String toString() |
|
数组(当前只支持对象类型一维数组,不支持基本类型数组及多维数组。) |
大小 |
取元素 |
|
存元素(只支持顺序存元素) |
|
Integer |
String toString() |
bool equals(Integer *obj) override |
|
int intValue() |
|
static Integer valueOf(String s) |
|
static Integer valueOf(int i) |
|
Boolean |
static Boolean valueOf(boolean b) |
boolean booleanValue() |
|
Long |
int hashCode() |
boolean equals(Long obj) |
|
String toString() |
|
Long *clone() |
|
long longValue() |
|
static Long valueOf(String s) |
|
static Long valueOf(long l) |
|
Object |
int hashCode() |
bool equals(Object *obj) |
|
String toString() |
|
Object *clone() |
|
String |
int hashCode() |
boolean equals(String anObject) |
|
String toString() |
|
Object *clone() |
|
String replace(String target, String replacement) |
|
Array split(String regex)(暂时只支持字符串的split,不支持根据正则进行split。) |
|
String replaceAll(String regex, String replacement) |
|
int lastIndexOf(String str) |
|
int length() |
|
String substring(int beginIndex) |
|
String substring(int beginIndex, int endIndex) |
|
boolean contains(String s) |
|
boolean endsWith(String suffix) |
|
boolean startsWith(String prefix) |
|
Gson |
String toJson(HashMap<String,String> map) |
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() |
double getAsDouble() |
|
float getAsFloat() |
|
int getAsInt() |
|
long getAsLong() |
|
short getAsShort() |
|
boolean getAsBoolean() |
|
String getAsString() |
|
boolean isJsonNull() |
|
String toString() |
|
String toString() |
|
JsonArray |
Iterator<JsonElement> iterator() |