【问题标题】:Apache Flink DataSet API: How to merge a Flink DataSet with itself to a new one?Apache Flink DataSet API:如何将 Flink DataSet 与自身合并为新的?
【发布时间】:2016-06-02 17:43:58
【问题描述】:

我有一个字符串类型的单维数据集:

DataSet<String> x = //['dog','cat','sheep']

我想将所有字符串与此 DataSet 中的其他字符串进行比较,以分析不同的字符串相似度算法。因此我需要一个具有以下结构的结果数据集:

DataSet<Tuple2<String,String>> y = //[{'dog','cat'},{'dog','sheep'},{'cat','sheep'}]

在此 DataSet 上,可以应用 flatMap 函数(或类似函数)来比较字符串。

我的问题是我不知道我必须使用哪个转换。也许转换不是处理这个问题的正确方法。

在纯 Java 中,我简单地使用两个这样的循环:

for(int i = 0; i < x.length() ; i++){
    for(int j = i+1 ; i< x.length(); j++){
        //do something with x[i] and x[j]
    }
}

【问题讨论】:

    标签: java dataset apache-flink bigdata


    【解决方案1】:

    x.cross(x) 应该可以解决问题。这将执行默认交叉。

    【讨论】:

    • 感谢您的帮助!交叉变换有效。在我的情况下,我使用 1. x.cross(x) 和 2. 过滤器转换来过滤掉所有不必要的元组来构建严格的上三角矩阵 (A=a[i][j] 并删除 a[i][ j] for i >= j) .... 如果有更高效的方法,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多