I extends scalarfunction like this,and I invoke 
tableEnv.createTemporarySystemFunction("tree_map", new TreeMapFunction());
public class TreeMapFunction extends ScalarFunction {
private static Logger profileLog = Logger.getLogger("zhangying480");

@Override
public boolean isDeterministic() {
return false;
}

public Map<String, String> eval() {
        Map<String, String> result = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
        });

result.put("a", "zhangying480");
result.put("as", "azhangying480");
result.put("abs", "aabzhangying480");
result.put("dv", "dzhangying480");
result.put("dd", "dczhangying480");
result.put("de", "eazhangying480");
result.put("e", "efzhangying480");
result.put("1", "eezhangying480");
result.put("#", "12zhangying480");
result.put("i", "#zhangying480");
        return result;
}
}
also,I extends scalarfunction like this,and I invoke 
tableEnv.createTemporarySystemFunction("map_unfold", new MapUnfoldFunction())
public class MapUnfoldFunction extends ScalarFunction {
public static Logger log = LoggerFactory.getLogger(MapUnfoldFunction.class);
    public String eval(Map<String, String> string2StringMap) {
        StringBuilder result = new StringBuilder();
        if(null != string2StringMap) {
            Set<Map.Entry<String, String>> entrySet = 
string2StringMap.entrySet();
            for (Map.Entry<String, String> entry : entrySet) {
                result.append(entry.getKey()).append(",");
}
        }
return result.toString();
}
}


I run a sql like this:
Table tableTreeMap = tableEnv.sqlQuery("select pvid,tree_map() as group_name 
from db1.`search_realtime_table_dump_p13`");
TableResult tableResult = tableEnv.executeSql("select map_unfold(group_name) as 
map_unfold from " + tableTreeMap)


I think the result like this:
#,1,a,abs,as,dd,de,dv,e,i,


but I get the result like this,it is out-of-order
|     dd,1,a,de,as,dv,#,abs,e,i, |
+--------------------------------+

Reply via email to