我有一个注册为tempView的dataFrame和一个要加入的Hive表
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表中的数据量非常高,spark会尝试将hive表读入内存,还是决定将tempView表写入hive。
在第一个答案后添加以下内容以获取更多详细信息:
我们说我们有
在Spark中称为TABLE_A的tempView为100行。
Hive TABLE_B中的10亿行表。
下一步我们需要将TABLE_A与TABLE_B连接。
TABLE_B上有一个日期范围条件。
由于表TABLE_B的大小很大。将spark读取整个表TABLE_B到内存中或者决定将TABLE_A写入Hadoop中的临时空间以进行Hive Join或者它将如何智能地找出进行性能连接的最佳方式