我想比较使用Spark的不同存储系统的读取性能,例如。 HDFS / S3N。我为此写了一个小Scala程序:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.storage.StorageLevel
object SimpleApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("WordCount")
val sc = new SparkContext(conf)
val file = sc.textFile("s3n://test/wordtest")
val splits = file.map(word => word)
splits.saveAsTextFile("s3n://test/myoutput")
}
}
我的问题是,是否可以使用Spark运行只读测试?对于上面的程序,还没有saveAsTextFile()导致一些写入吗?
答案 0 :(得分:1)
是。“saveAsTextFile”使用给定路径将RDD数据写入文本文件。
答案 1 :(得分:1)
我不确定这是否可行。要运行转换,需要后验操作。
来自官方Spark documentation:
Spark中的所有转换都是懒惰的,因为它们不会立即计算结果。相反,他们只记得应用于某些基础数据集(例如文件)的转换。仅当操作需要将结果返回到驱动程序时才会计算转换。
考虑到这一点,saveAsTextFile
可能不被视为可用的广泛行动中最轻的。存在几种轻量级替代方案,例如count
或first
等操作。这些将几乎将整个工作用于转换阶段,使您能够衡量解决方案的性能。
您可能需要查看available actions并选择最符合您要求的那个。