gpt4 book ai didi

java - Spark中读数据库的执行时间

转载 作者:行者123 更新时间:2023-12-01 16:54:51 27 4
gpt4 key购买 nike

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

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的时间?

最佳答案

这是衡量 DataFrame 操作所需时间的糟糕方法。

Spark 使用 DAG 进行 DataFrame 操作。除非您对该 DataFrame 调用任何操作(例如计数),否则 Spark 将继续在后台读入 DataFrame。另一方面,转换本质上是惰性的,即它们仅在被操作调用时才会执行。它们不会立即执行

如果您稍后在代码中执行操作,最好现在不要执行 .count()

如果您想了解完成 DataFrame 读取所需的时间,建议您查看 Spark 作业日志。

关于java - Spark中读数据库的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61607089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com