Java Spark-SQLアプリケーションのテストをいくつか作成しようとしています。テストする必要がある操作の1つに列の名前が変更されました。名前が変更された列の実際の値と期待値を比較するのが難しくなりました。いくつかの実験の後に、私は問題を実証するために以下の2つのテストを書くことができました:名前を変更した後にスパーク列の一致をチェックする方法
まず最初に、私はこれを試しました(dfはspark sql DataFrame
、jsonファイル私は反対にテストしています):
@Test
public void testColumnEquality() throws Exception {
Column val1 = df.col("col2");
Column val2 = df.col("col2");
Assert.assertEquals(val1, val2);
}
期待通りに通過します。そして、私はこれを試してみました:
@Test
public void testReanmeColumnEquality() throws Exception {
Column val1 = df.col("col2").as("col2");
Column val2 = df.col("col2").as("col2");
Assert.assertEquals(val1, val2);
}
Scalaのコードで周り掘りエラーjava.lang.AssertionError: expected:<col2 AS col2#4L> but was:<col2 AS col2#5L>
で失敗した(完全な情報開示 - 私は非常に少ないScalaのを知っている)、これはNamedExpression
一意のIDに関係しているように見えます。
これらの2つの列が同じエイリアスで同じ操作を表すかどうかを確認する方法はありますか?
(私は火花1.6で働いている、となり、理想的にそのバージョンの行のためのソリューションのように、これは2.0に固定されている場合にも良い情報になるという。)
ありがとうございます。
Scalaで実行できますか? – Wilmerton