Spark:转换数据帧

时间:2017-10-30 09:25:55

标签: scala apache-spark apache-spark-sql

我在Scala中使用Spark 1.6.1。

我有一个数据框,我想创建不同的数据框,只想读一次

例如,一个数据框有两列 ID和TYPE ,我想创建两个数据框一个值为type = A 和其他类型值= B

我已经检查了stackoverflow上的其他帖子,但发现只有2次读取数据帧的选项。 但是,我想要另一种具有最佳性能的解决方案。

种类问候。

1 个答案:

答案 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"删除列,因为在分离后它应该是不必要的。