我在Scala中使用Spark 1.6.1。
我有一个数据框,我想创建不同的数据框,只想读一次。
例如,一个数据框有两列 ID和TYPE ,我想创建两个数据框一个值为type = A 和其他类型值= B 。
我已经检查了stackoverflow上的其他帖子,但发现只有2次读取数据帧的选项。 但是,我想要另一种具有最佳性能的解决方案。
种类问候。
答案 0 :(得分:-1)
如果对数据执行多个操作,Spark将多次从数据源读取。避免这种情况的方法是使用cache()
。这样,数据将在第一个操作后保存到内存中,这将使后续操作更快地使用数据。
您可以通过这种方式创建两个数据帧,只需读取一次数据源。
val df = spark.read.csv(path).cache()
val dfA = df.filter($"TYPE" === "A").drop("TYPE")
val dfB = df.filter($"TYPE" === "B").drop("TYPE")
" TYPE"删除列,因为在分离后它应该是不必要的。