我对Spark的内部运作有疑问。
如果我从Hive表中定义一个数据框,例如df1 = spark_session.table('db.table');该表只读取一次吗?
我的意思是,如果我从df1创建了4或5个新的数据帧并将它们全部输出到单独的文件,这比将它们全部作为不同的spark文件运行的效率更高?
这比下图更有效吗?是否会因为我们一次读取数据而导致Hive上的负载减少,或者现在它如何工作?
如果我从Hive表中定义一个数据框,例如df1 = spark_session.table('db.table');该表只读取一次吗?
您需要缓存()df1 = spark_session.table('db.table').cache()
,然后spark将执行一次读取表并在执行操作时缓存数据。
如果将df1输出到4 or 5
,由于我们已经缓存了数据,因此不同的文件也只会触发一次从hive表中读取数据。
这比下图更有效吗?是否会因为一次读取数据而导致Hive上的负载减少,或者这现在是如何工作的?
是的,在您的[[第一个图表中,由于我们一次读取数据,我们在hive
上的负载较小。
第二张图表