2017-11-03 4 views
0

目的 - sparkによって生成されたデータフレームと手動で作成されたデータフレームが同じかどうかを確認します。働いスパークデータフレームを比較するためのスカラユニットテストの作成方法は?

以前の実装 -

if (da.except(ds).count() != 0 && ds.except(da).count != 0) 

ブール値を返します - trueダとDSが発生したデータフレームと作成したデータフレームそれぞれ

ここでは、プログラムをspark-shellで実行しています。動作しません

新しい実装 -

assert (da.except(ds).count() != 0 && ds.except(da).count != 0) 

ブール値を返します - falseダとDSが発生したデータフレームと作成したデータフレームそれぞれ

ここでは、代わりにscalatestのassertメソッドを使用していますが、返された結果はtrueとして返されません。

以前のメソッドが機能したときに新しい実装を使用しようとするとどうしてですか? sbtを使用して、常にテストファイルをsbt testまたはコンパイル時に実行するようにします。

spark-shell経由で実行したときにsparkデータフレームを比較する同じコードは、正しい出力を示しますが、sbtでscalatestを使用して実行するとエラーが表示されます。

2つのプログラムは実質的に同じですが、結果は異なります。何が問題なの?データフレームを比較するための

+0

エラーは何ですか? – kberg

答えて

1

テストたとえば、スパークコアに存在する:テストと https://github.com/apache/spark/blob/master/sql/core/src/test/scala/org/apache/spark/sql/GeneratorFunctionSuite.scala

図書館は、中央Mavenのリポジトリに存在するコード(SharedSQLContext、電気ショック療法)を共有し、プロジェクトに含めると、「checkAnswer」メソッドを使用することができますデータフレームを比較する。

+0

私のコードがうまくいかない具体的な理由はありますか? –

+0

このコードが必要ですか?既存の正常に機能した機能を使用することができ、ホイールを再構築しないでください。 – pasha701

1

私はこれを依存関係https://github.com/MrPowers/spark-fast-testsとして使用して問題を解決しました。

もう1つの解決策は、データフレームのメンバーを個別に反復して比較することです。

関連する問題