私は、選択や削除がどのように機能しているのかを疑いはしないと思います。
データセットが爆発的になり、新しく生成されたエントリに列の一部をコピーしたくありません。選択/ドロップは実際に列を削除しませんか?
val ds = spark.sparkContext.parallelize(Seq(
("2017-01-01 06:15:00", "ASC_a", "1"),
("2017-01-01 06:19:00", "start", "2"),
("2017-01-01 06:22:00", "ASC_b", "2"),
("2017-01-01 06:30:00", "end", "2"),
("2017-01-01 10:45:00", "ASC_a", "3"),
("2017-01-01 10:50:00", "start", "3"),
("2017-01-01 11:22:00", "ASC_c", "4"),
("2017-01-01 11:31:00", "end", "5")
)).toDF("timestamp", "status", "msg")
ds.show()
val foo = ds.select($"timestamp", $"msg")
val bar = ds.drop($"status")
foo.printSchema()
bar.printSchema()
println("foo " + foo.where($"status" === "end").count)
println("bar" + bar.where($"status" === "end").count)
出力:
root |-- timestamp: string (nullable = true) |-- msg: string (nullable = true) root |-- timestamp: string (nullable = true) |-- msg: string (nullable = true)
fooの2
バー2
なぜ私はまだ私は
a)は選択しなかったの両方かかわらのため2の出力を得るのですかステータス
b)ステータスが低下した
EDIT:
println("foo " + foo.where(foo.col("status") === "end").count)
には、列のステータスはありません。これはprintln("foo " + foo.where($"status" === "end").count)
と同じではないでしょうか?