【发布时间】:2016-12-01 23:26:34
【问题描述】:
我有一个包含 10 列的文件。仅提取前 3 列或特定列的最优雅方法是什么?
例如,我的文件是这样的:
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));
我阅读了 following two Stackoverflow 的帖子,但我仍然无法决定如何执行此操作。
编辑: 我最终做了以下事情:
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 的实现,但这里是 documentation for that
标签: java apache-spark