大数据中的一个常见问题是将数据转换成大数据友好的格式(Parquet地板或tsv)。
Spark wholeTextFiles
现在又回来了 RDD[(String, String)]
(path->wholefile as string)是一种很有用的方法,但是当文件很大时会导致很多问题(主要是内存问题)。
原则上,应该可以使用底层hadoopapi编写如下方法
def wholeTextFilesIterators(path: String): RDD[(String, Iterator[String])]
其中迭代器是文件(假定换行符作为分隔符),迭代器封装底层文件读取和缓冲。
在阅读了代码一段时间之后,我认为解决方案应该包括创建类似于 WholeTextFileInputFormat
以及 WholeTextFileRecordReader
.
更新:
经过深思熟虑,这可能意味着还需要实现一个定制 org.apache.hadoop.io.BinaryComparable
因此迭代器可以在洗牌中生存(由于迭代器有文件句柄,很难序列化迭代器)。
另请参见https://issues.apache.org/jira/browse/spark-22225
spark在rdds中获取文件名
1条答案
按热度按时间7fhtutme1#
根据玄真对圣战的评论,一些接近所需的东西是由神给予的