你好,我正在尝试使用火花从文本文件中读取特定的行。
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
sc = new JavaSparkContext(conf);
JavaRDD<String> lines = sc.textFile("data.txt");
String firstLine = lines.first();
它可以用。获取第一行数据的第一个()命令。文本文件。如何访问文档的第n行?我需要java解决方案。
就像@Daniel Darabos所说的,RDD不会为行查找建立索引,所以另一种方法是给它一个索引:
lines.zipWithIndex.filter(_._2==n).map(_._1).first()
给它一个索引,然后再次使用火花上下文,但是当您的RDD的大小很小时,这种方法是一些低效和愚蠢的。但是当您的RDD的大小很大时,将它收集到主服务器变得低效(并且可能会受到限制),这种方法成为更好的选择。
我认为这是最快的
scala prettyprint-override">def getNthLine(n: Long) =
lines.zipWithIndex().filter(_._2 == n).first
Apache Spark RDD不用于查找。获取n
th行的最“有效”方法是行。以(n1)为例。获取(n)
。每次执行此操作时,它都会读取文件的第一行。你可以运行行。缓存
以避免这种情况,但它仍然会以非常低效的方式在网络上移动第一行。
如果数据可以放在一台机器上,只需收集一次,并在本地访问它:List
如果数据不适合一台机器,则需要一个支持高效查找的分布式系统。流行的例子是HBase和Cassandra。
你的问题也可以通过Spark有效解决,但不能通过查找来解决。如果你用一个单独的问题来解释更大的问题,你可能会得到这样的解决方案。(查找在单机应用程序中非常常见,但分布式算法必须有不同的想法。)
问题内容: 堆栈: Java-1.8.0_91 Scala-2.11.8 库-it.geosolutions.imageio-ext imageio-ext-tiff 1.1.15 我们正在读取许多旧的TIF图像,并且由于某种原因读取的数据高度不一致-出于某些原因,在不同的运行中读取同一图像可能会成功或失败,但是- 代码是这样的: 问题是ImageIO同时初始化2个TIFF读取器 要么 第一个失败
问题内容: 我有以下从缓冲读取器读取数据的示例: 每当缓冲读取器中出现某些情况时(在这种情况下),将执行循环中的代码。在我的情况下,如果客户端应用程序将某些内容写入套接字,则将执行循环中的代码(服务器应用程序中)。 但是我不明白它是如何工作的。等待直到缓冲读取器中出现某些内容,当其中出现某些内容时,它将返回并执行循环中的代码。但是什么时候可以退货。 还有另一个问题。上面的代码摘自一个方法,我在线程
问题内容: 在Java中,是否有任何方法可以从文件中读取特定行?例如,读取第32行或任何其他行号。 问题答案: 除非你以前对文件中的行有一定的了解,否则没有阅读前31行就无法直接访问第32行。 所有语言和所有现代文件系统都是如此。 如此有效地,你只需阅读第32行,直到找到第32行为止。
有谁能帮助我阅读作为Web服务调用响应的XML吗。 我得到的回应是这样的: 当我得到-1作为响应时,我想预先执行动作。我如何阅读它。我在GAE中使用struts,我使用
问题内容: CSS属性属性如何读取? 难道,......? 答: 从下面的答案中,它看起来很简单,或者。 问题答案: “!important”声明(定界符“!”和关键字“ important”紧随该声明)优先于普通声明。 基本上,在两个样式规则相同的地方……它给了一个明显的重要性,并将应用这些样式。 例 即使第二条规则更具体,也将应用第一条规则(一个元素+一个类,而不是一个元素) 注意: 当您拥有
我必须编写一个小的解析应用程序,它是用一些额外的信息重写一个postscriptfile。 为了达到这个目标,我只需要使用一个BufferedReader和一个FileReader和一个FileWriter。但我要用转义符(%号)来处理一个问题。 Java忽略了这个字符,输入文件中的行“%!ps-adobe-3.0”将在字符串中显示为“!ps-adobe-3.0”,在输出文件中也将显示为“!ps-