如何在DataFrame Spark 1.6中加载特定的Hive分区?

Ume*_*cha 7 hive apache-spark apache-spark-sql

根据官方文档我们无法将Spark 特定的hive分区添加到DataFrame

Till Spark 1.5以下用于工作,数据框将具有实体列和数据,如下所示 -

DataFrame df = hiveContext.read().format("orc").load("path/to/table/entity=xyz")
Run Code Online (Sandbox Code Playgroud)

但是,这在Spark 1.6中不起作用.

如果我给出如下所示的基本路径,它不包含我想要在DataFrame中的实体列,如下所示 -

DataFrame df = hiveContext.read().format("orc").load("path/to/table/") 
Run Code Online (Sandbox Code Playgroud)

如何在数据框中加载特定的配置单元分区?删除此功能的驱动因素是什么?

我相信它很有效率.Spark 1.6中是否有替代方案?

根据我的理解,Spark 1.6加载所有分区,如果我过滤特定分区它效率不高,它会因为数千个分区加载到内存而不是特定分区而中断内存并抛出GC(垃圾收集)错误.

请指导.提前致谢.

Ume*_*cha 9

要使用Spark 1.6在DataFrame中添加特定分区,我们必须执行以下第一个设置basePath,然后提供需要加载的分区路径

DataFrame df = hiveContext.read().format("orc").
               option("basePath", "path/to/table/").
               load("path/to/table/entity=xyz")
Run Code Online (Sandbox Code Playgroud)

因此,上面的代码只会加载DataFrame中的特定分区.