您好,我正在尝试使用 Spark 从文本文件中读取特定行。
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
sc = new JavaSparkContext(conf);
JavaRDD<String> lines = sc.textFile("data.txt");
String firstLine = lines.first();
它可以使用 .first() 命令来获取 data.text 文档的第一行。如何访问文档的第N行?我需要java解决方案。
Apache Spark RDD 不适合用于查找。最“高效”的获取方式n
th 行将是lines.take(n + 1).get(n)
。每次执行此操作时,它都会读取第一个n
文件的行。你可以跑lines.cache
以避免这种情况,但它仍然会首先移动n
网络上的线路以一种非常低效的方式舞蹈。
如果数据可以容纳在一台机器上,只需将其全部收集一次,然后在本地访问:List<String> local = lines.collect(); local.get(n);
.
如果数据无法容纳在一台机器上,则需要一个支持高效查找的分布式系统。流行的例子是 HBase 和 Cassandra。
您的问题也有可能可以通过 Spark 有效解决,但不能通过查找来解决。如果你在一个单独的问题中解释更大的问题,你可能会得到这样的解决方案。 (查找在单机应用程序中非常常见,但分布式算法必须以不同的方式思考。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)