如何从sparkContext中读取特定行

Mir*_*mid 6 java text line apache-spark

嗨,我正在尝试使用spark从文本文件中读取特定行.

SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
sc = new JavaSparkContext(conf);
JavaRDD<String> lines = sc.textFile("data.txt");
String firstLine = lines.first();
Run Code Online (Sandbox Code Playgroud)

它可以使用.first()命令获取data.text文档的第一行.如何访问文档的第N行?我需要java解决方案.

Dan*_*bos 7

Apache Spark RDD不适用于查找.获得第一n线的最"有效"方式是lines.take(n + 1).get(n).每次执行此操作时,它都会读取n文件的第一行.你可以跑去lines.cache避免这种情况,但它仍然会n以非常低效的舞蹈在网络上移动第一行.

如果数据可以放在一台机器上,只需收集一次,然后在本地访问:List<String> local = lines.collect(); local.get(n);.

如果数据不适合一台计算机,则需要一个支持高效查找的分布式系统.流行的例子是HBase和Cassandra.

您也可以使用Spark有效解决问题,但不能通过查找解决问题.如果您在单独的问题中解释较大的问题,您可能会得到这样的解决方案.(查找在单机应用程序中非常常见,但分布式算法必须以不同的方式思考.)