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

时间:2016-01-07 15:38:43

标签: apache-spark hive apache-spark-sql spark-dataframe

  按照官方doc我们无法添加特定的Spark 1.6   hive分区到DataFrame

     

直到Spark 1.5以下用于工作和数据帧   将有实体列和数据,如下所示 -

DataFrame df = hiveContext.read().format("orc").load("path/to/table/entity=xyz")

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

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

DataFrame df = hiveContext.read().format("orc").load("path/to/table/") 
  

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

我认为这很有效率。 Spark 1.6中是否有替代方案?

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

请指导。提前致谢。

1 个答案:

答案 0 :(得分:8)

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

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

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