从Spark中的文本文件创建PairedRDD

时间:2018-09-02 05:18:29

标签: java apache-spark rdd

我对使用Java编码的Apache Spark表示怀疑。我有 一个纯文本的示例文件,该文件由用Tab字符分隔的对组成。像这样:

** example.txt
1   5
2   7
5   4
**

,我正在互联网上阅读一些书籍,他们建议使用此代码创建第一行 pairedRDD ,该行的第一列为键,第二列为值。因此,他们使用了 Tuple2 (来自scala)。

但是我不明白为什么我看到的所有示例都创建了元组,并使用 whole 行的值初始化了对象。因为键只是 x.split()[0] 函数的[0]。价值似乎是整条线。

这是正确的吗?还是应该用 x.split()[1] (用于值)替换它?

下面的代码是我在网上的许多示例资源中找到的。

PairFunction<String, String, String> keyData =   new PairFunction<String, String, String>() {

    public Tuple2<String, String> call(String x) {

    return new Tuple2(x.split(” “)[0], x);

}

1 个答案:

答案 0 :(得分:0)

这只是一个例子。您可以返回x [1]或x。我不知道确切的上下文,但是据我所记得,我过去在这里已经看到过这种示例样式。

因此,您的选择没有对与错。对我来说,我假设x [1],但同样可以将x [0]视为行的键。

这里的教训是:两者都可以。例如,您可以从此处开始 reduce(ByKey) groupByKey 。这就是PairedRDD可以做到的。