gpt4 book ai didi

hadoop - 如何有效地读取带有 spark 路径的文件,即想要返回 `wholeTextFiles` 的 `RDD[String, Iterator[String]]`

转载 作者:可可西里 更新时间:2023-11-01 15:58:31 26 4
gpt4 key购买 nike

大数据中的一个常见问题是将数据转换为大数据友好格式(parquet 或 TSV)。

在当前返回 RDD[(String, String)] (path -> whole file as string) 的 Spark wholeTextFiles 中,这是一种有用的方法,但会导致许多问题当文件很大时(主要是内存问题)。

原则上应该可以使用底层 Hadoop API 编写如下方法

def wholeTextFilesIterators(path: String): RDD[(String, Iterator[String])]

其中迭代器是文件(假设换行符作为分隔符)并且迭代器正在封装底层文件读取和缓冲。

在阅读代码一段时间后,我认为解决方案将涉及创建类似于 WholeTextFileInputFormatWholeTextFileRecordReader 的内容。

更新:

经过一些思考,这可能意味着还需要实现一个自定义 org.apache.hadoop.io.BinaryComparable,这样迭代器就可以在随机播放中幸存下来(很难序列化迭代器,因为它有文件句柄)。

另见 https://issues.apache.org/jira/browse/SPARK-22225

Spark-Obtaining file name in RDDs

最佳答案

根据 Hyukjin 对 JIRA 的评论,给出了接近想要的东西

spark.format("text").read("...").selectExpr("value", "input_file_name()")

关于hadoop - 如何有效地读取带有 spark 路径的文件,即想要返回 `wholeTextFiles` 的 `RDD[String, Iterator[String]]`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40739641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com