1
我有被注册为tempView一个数据帧和蜂巢表加入pySpark怎么做TempView表连接蜂巢表
df1.createOrReplaceTempView("mydata")
df2 = spark.sql("Select md.column1,md.column2,mht.column1 \
from mydata md inner join myHivetable mht on mht.key1 = md.key1 \
where mht.transdate between '2017-08-01' and '2017-08-10' ")
这是如何发生的联接。如果Hive表中的数据量非常大,将会尝试将hive表读入内存或决定将tempView表写入配置单元。
添加以下其他详细信息,第一个答案后:
比方说,我们有
100行作为tempView在星火称为TABLE_A。
Hive TABLE_B中的10亿行表。
下一步我们需要将TABLE_A和TABLE_B结合起来。
TABLE_B上有一个日期范围条件。
由于表TABLE_B的大小很大。将会将整个表TABLE_B读入内存或决定将TABLE_A写入Hadoop中的临时空间以执行Hive Join或者它将如何智能地计算出执行连接以获得高性能的最佳方式
是的,这是正确的。假设我们在Spark中有100行为tempView,名为TABLE_A。我在Hive TABLE_B中有一个10亿行的表。作为下一步,我们需要加入这些2. TABLE_B上有一个日期范围条件。由于表TABLE_B的大小很大。 Spark会将整个表TABLE_B读入内存中,或者决定将TABLE_A写入Hadoop中的临时空间以执行Hive Join,或者如何智能地找出最佳方式来执行连接以提高性能 – Nav
Spark在管理这种大量数据方面非常聪明数据的。如果它有十亿行,你可能需要足够的配置(至少8GB执行器内存),它不会将所有内容都加载到单个节点的内存中 – karthikr