zeo*_*dtr 15 hadoop hadoop-yarn apache-spark
需要帮助实施最佳实践.操作环境如下:
在测试中,我尝试使用带有glob路径的sc.textFile()从Spark处理160,000个后处理文件,但在驱动程序进程中出现OutOfMemory异常失败.
处理此类数据的最佳做法是什么?我应该使用HBase而不是普通文件来保存后处理数据吗?
我们写了自己的装载机 它通过HDFS中的小文件解决了我们的问题.它使用Hadoop CombineFileInputFormat.在我们的例子中,它将映射器的数量从100000减少到大约3000,并使工作速度明显加快.
https://github.com/RetailRocket/SparkMultiTool
例:
import ru.retailrocket.spark.multitool.Loaders
val sessions = Loaders.combineTextFile(sc, "file:///test/*")
// or val sessions = Loaders.combineTextFile(sc, conf.weblogs(), size = 256, delim = "\n")
// where size is split size in Megabytes, delim - line break character
println(sessions.count())
Run Code Online (Sandbox Code Playgroud)