Spark HiveContext:HDFS上有多个文件的表

时间:2016-09-13 23:00:22

标签: python apache-spark dataframe hdfs

我有一个Hive表X,它在HDFS上有多个文件。 表X在HDFS上的位置是/ data / hive / X. 文件:

/data/hive/X/f1
/data/hive/X/f2
/data/hive/X/f3 ...

现在,我运行以下命令:

df=hiveContext.sql("SELECT count(*) from X")
df.show()

内部会发生什么?每个文件是否被视为一个单独的分区,并由一个单独的节点处理,然后整理结果?

如果是,是否有办法指示Spark将所有文件加载到1个分区然后处理数据?

提前致谢。

1 个答案:

答案 0 :(得分:1)

Spark将联系Hive Metastore以查找(a)数据位置(b)如何读取数据。在较低级别,Spark将根据配置单元中用于存储数据的输入格式获取输入拆分。确定Splits后,Spark将读取数据1分割/分区。 在Spark中,一个物理节点可以运行一个或多个执行程序。每个执行程序都有一个或多个分区。 一旦数据被读入内存,spark就会运行一个计数,这将是(a)map上的本地计数(b)shuffle之后的全局计数。然后它会返回给驱动程序。