我有一个包含10列的文件。什么是最好的方式来提取只有前3列或特定列?仅提取Java中的某些列Spark Spark
例如,这是我的文件看起来像:
john,smith,84,male,kansas
john,doe,48,male,california
tim,jones,22,male,delaware
而且我想提取到这一点:
[john, smith, kansas]
[john, doe, california]
[tim, jones, delaware]
我有这个,但它并没有特意选择我想要的列:
JavaRDD<String> peopleRDD = sc.textFile(DATA_FILE);
peopleRDD.cache().map(lines -> Arrays.asList(lines.split(",")))
.forEach(person -> LOG.info(person));
我读了followingtwo堆栈溢出帖子,但我仍然无法决定如何做到这一点。
编辑: 最后我做了以下内容:
JavaRDD<String> peopleRDD = sc.textFile(DATA_FILE);
peopleRDD.cache().map(lines -> Arrays.asList(new String[]{lines.split(",")[0],
lines.split(",")[1],
lines.split(",")[3]}
.forEach(person -> LOG.info(person));
不是最完美的解决方案,但如果你有更好的办法,请张贴在这里。谢谢。
个人而言,我会用SparkSQL + Dataframes。可悲的是,我只知道Python的实现,但这里是[文档](http://spark.apache.org/docs/latest/sql-programming-guide.html#inferring-the-schema-使用反射) –