Spark Sql如何模拟current_timestamp

问题描述 投票:-1回答:1

我正在尝试为涉及current_timestamp函数的SparkSql编写单元测试:

这是我要测试的方法:

protected Dataset<Row> convertInput(Dataset<Row> inputData){
    return sparkSession.sql("select a+1, b+2, current_timestamp as updated_at");
}

而且我想按如下方法测试方法:

@Test
public void testConvertInput() {
         Dataset<Row> input = fromJson("test1_input.json");
         Dataset<Row> expected = fromJson("test1_output.json");

         Dataset<Row> output = convertInput(input);
         DatasetAssert.assertSets(expected, output);       
}

该断言由于时间戳比较而失败。

我试图将current_timestamp列添加到输入数据集,但是并不能涵盖我的所有用例。

apache-spark junit apache-spark-sql mockito
1个回答
0
投票
我通过添加名为current_timestamp的列来解决它>

@Test public void testConvertInput() { Timestamp mockTime = Timestamp.from(Instant.parse("2020-01-10T12:00:00.000Z")); Dataset<Row> input = fromJson("test1_input.json").withColumn("current_timestamp", lit(mockTime)); Dataset<Row> expected = fromJson("test1_output.json"); Dataset<Row> output = convertInput(input); DatasetAssert.assertSets(expected, output); }

© www.soinside.com 2019 - 2024. All rights reserved.