pySpark如何将TempView表连接到Hive表

时间:2017-08-26 01:43:12

标签: hadoop pyspark pyspark-sql

我有一个注册为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或者它将如何智能地找出进行性能连接的最佳方式

1 个答案:

答案 0 :(得分:1)

Hive上下文将已注册临时表/视图的信息存储在Metastore中。这允许对数据执行类似SQL的查询操作 - 我们仍然可以获得与其他方式相同的性能。

有关此问题的更多信息,请参阅herehere