将分隔的数据从文本文件读取到不同的RDD中 [英] Reading delimited data from text file into different RDDs

查看:45
本文介绍了将分隔的数据从文本文件读取到不同的RDD中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Apache Spark Java的新手我有一个以空格分隔的文本文件,如下所示:

Am new to Apache Spark java I have a text file delimited by space as below

3,45.25,23.45
5,22.15,19.35
4,33.24,12.45
2,15.67,21.22

此处各栏的意思是:

  • 第一列:索引值
  • 第二列:纬度值
  • 第3列:经度值

Am试图将此数据解析为2或3个RDD(或成对的RDD).到目前为止,这是我的代码:

Am trying to parse this data into 2 or 3 RDDs (or pair RDDs). This is my code so far:

JavaRDD<String> data = sc.textFile("hdfs://data.txt");

JavaRDD<Double> data1 = data.flatMap(
  new FlatMapFunction<String, Double>() {
    public Iterable<Double> call(Double data) {
      return Arrays.asList(data.split(","));
    }
});

推荐答案

这样的事情(使用Java 8以获得更好的可读性)?

Something like this (use Java 8 for better readability)?

JavaRDD<String> data = sc.textFile("hdfs://data.txt");
JavaRDD<Tuple3<Integer, Float, Float>> parsedData = data.map((line) -> line.split(","))
        .map((line) -> new Tuple3<>(parseInt(line[0]), parseFloat(line[1]), parseFloat(line[2])))
        .cache(); // Cache parsed to avoid recomputation in subsequent .mapToPair calls

JavaPairRDD<Integer, Float> latitudeByIndex = parsedData.mapToPair((line) -> new Tuple2<>(line._1(), line._2()));
JavaPairRDD<Integer, Float> longitudeByIndex = parsedData.mapToPair((line) -> new Tuple2<>(line._1(), line._3()));
JavaPairRDD<Integer, Tuple2<Float, Float>> pointByIndex = parsedData.mapToPair((line) -> new Tuple2<>(line._1(), new Tuple2<>(line._2(), line._3())));

这篇关于将分隔的数据从文本文件读取到不同的RDD中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆