如何在 DataFrame Spark 1.6 中加载特定的 Hive 分区?
How to load specific Hive partition in DataFrame Spark 1.6?
根据官方的 Spark 1.6 起 doc 我们不能将特定的 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(垃圾收集)错误,因为成千上万的分区被加载到内存中,而不是具体分区。
要使用 Spark 1.6 在 DataFrame 中添加特定分区,我们必须首先执行以下设置 basePath
,然后给出需要加载的分区路径
DataFrame df = hiveContext.read().format("orc").
option("basePath", "path/to/table/").
load("path/to/table/entity=xyz")
所以上面的代码将只加载 DataFrame 中的特定分区。
根据官方的 Spark 1.6 起 doc 我们不能将特定的 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(垃圾收集)错误,因为成千上万的分区被加载到内存中,而不是具体分区。
要使用 Spark 1.6 在 DataFrame 中添加特定分区,我们必须首先执行以下设置 basePath
,然后给出需要加载的分区路径
DataFrame df = hiveContext.read().format("orc").
option("basePath", "path/to/table/").
load("path/to/table/entity=xyz")
所以上面的代码将只加载 DataFrame 中的特定分区。