java - Spark (Java): Get Filename/Content pairs from a list of file names

标签 java apache-spark rdd

我目前正在使用 Java 开发 Spark 项目,遇到了一个不知道如何解决的问题。我不熟悉各种连接/联合方法,所以我认为其中之一就是答案。

我当前想要输入文件名(或路径)列表并获取一个 JavaPairRDD 对象,该对象由文件名/路径对和文本内容组成。

我知道我可以使用标准 Java 来获取文本内容,只需输入文件名内容元组列表,但我觉得必须有一种“Spark”方式来执行此操作。

我也知道有一个 WholeTextFile 方法,但它只能获取目录中的所有内容,我不确定这是否是我得到的格式(例如,我可能使用 Amazon S3,我不确定是否可以对那里的目录做出假设)。

此外,我知道我可以在循环中单独并行化每个文件,但如何将它们重新连接在一起?

docs = //List<String> of document filenames
JavaRDD<String> documents = sc.parallelize(docs);
JavaPairRDD<String, String> = documents.???

提前致谢。

编辑:我很想创建一个 <Filename, JavaRDD<String> filecontents> 的 JavaPairRDD ,但我不确定如何从那里继续。我也对此保持警惕,因为它听起来是错误的(即我是否以某种方式覆盖了并行性?)。

我知道我可以让 Spark 从每个文档创建一个 JavaRDD 对象,将它们转换为 List 对象,然后将它们作为元组输入,但是有 Spark 特定的方法来执行此操作吗?

编辑2 显然,我误解了如何将文本文件加载到JavaRDD对象中。它们不会将整个字符串作为一个对象加载,而是按行将其分解。这让我重新思考我的方法,因为出于各种原因我确实需要打破界限。所以我想我必须采用“hackish”方法,使用 Spark 加载文件,然后将其转换回列表。不过,如果有人对此有巧妙的解决方案,我会保留这个问题。

最佳答案

我将改用 WholeTextFiles(),因为我在尝试将数据转换为正确的格式时遇到了越来越多的问题。

也就是说,我实际上并不希望文件被分成行,我想自己以特殊的方式将其分解。

关于java - Spark (Java): Get Filename/Content pairs from a list of file names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997194/

相关文章:

java - 写入/保存自定义对象数组 android java

java - GridView 图像链接到 Activity

postgresql - 集群中有 20 个分区但没有工作人员被使用的 RDD

python - Spark MLlib 中的 StringIndexer

Java swt Canvas运行循环

java - 对数组进行排序以形成稍微平衡的二叉搜索树

python - Spark - 如何从 S3 读取多个具有文件名的多个 Json 文件

sql-server - 当 set_identity 关闭时,如何将 Spark 数据帧推送到 Sql Server 表?

apache-spark - 在 amazon emr 上运行时要指定什么作为 spark master

apache-spark - Apache Spark SQL - RDD 内存数据倾斜