火花中读取数据库的执行时间

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

我正在尝试查找以下代码的执行时间

public Dataset<Row> loadData(SparkSession spark, String url, String query, String driver) {
        long startTime=System.nanoTime();
        Dataset<Row> readDataFrame= spark.read()
                .format("jdbc")
                .option("url", url)
                .option("dbtable", query)
                .option("driver", driver)
                .load();
        long endTime=System.currentTimeMillis();
        System.out.println((endTime-startTime)/1000000);
        return readDataFrame;
    }

上面的代码给了我20毫秒的时间。现在,我在下面添加了一个操作,例如

        long startTime=System.nanoTime();
        Dataset<Row> readDataFrame= spark.read()
                .format("jdbc")
                .option("url", url)
                .option("dbtable", query)
                .option("driver", driver)
                .load();
        long count=readDataFrame.count();
        long endTime=System.currentTimeMillis();
        System.out.println((endTime-startTime)/1000000);
        return readDataFrame;

此代码给了我2000毫秒作为答案,我想是正确的。

现在,我们在代码的后面已经有一个动作,由于可能存在内存问题,所以不想使用persist。有什么好方法可以找到这个readDataFrame的时间吗?

java apache-spark apache-spark-sql
1个回答
0
投票

这是一种衡量DataFrame操作所花费时间的不好方法。

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