Hive和PySpark效率-很多工作还是一项工作?

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

我对Spark的内部运作有疑问。

如果我从Hive表中定义一个数据框,例如df1 = spark_session.table('db.table');该表只读取一次吗?

我的意思是,如果我从df1创建了4或5个新的数据帧并将它们全部输出到单独的文件,这比将它们全部作为不同的spark文件运行的效率更高?

这比下图更有效吗?是否会因为我们一次读取数据而导致Hive上的负载减少,或者现在它如何工作?

enter image description here

超过此:enter image description here

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

如果我从Hive表中定义一个数据框,例如df1 = spark_session.table('db.table');该表只读取一次吗?

  • 您需要缓存()df1 = spark_session.table('db.table').cache(),然后spark将执行一次读取表并在执行操作时缓存数据。

  • 如果将df1输出到4 or 5,由于我们已经缓存了数据,因此不同的文件也只会触发一次从hive表中读取数据。


这比下图更有效吗?是否会因为一次读取数据而导致Hive上的负载减少,或者这现在是如何工作的?

  • 是的,在您的[[第一个图表中,由于我们一次读取数据,我们在hive上的负载较小。

  • 在您的

    第二张图表

  • 中,如果我们为每个文件编写单独的spark作业,这意味着我们正在读取每个作业中的配置单元表。
© www.soinside.com 2019 - 2024. All rights reserved.