spark-shell 按分区加载现有配置单元 table?
spark-shell load existing hive table by partition?
在 spark-shell
中,我如何加载一个现有的 Hive table,但只加载它的一个分区?
val df = spark.read.format("orc").load("mytable")
我正在寻找一种方法,以便它只加载此 table 的一个特定分区。
谢谢!
Spark API 中没有只加载分区目录的功能,但换句话说,分区目录只是 where 子句中的列,这里你可以对简单的 sql 查询在 where 子句中带有分区列,它将仅从分区目录中读取数据。看看这是否适合你。
val df = spark.sql("SELECT * FROM mytable WHERE <partition_col_name> = <expected_value>")
在spark.read.format
中没有直接的方法,但你可以使用where
条件
val df = spark.read.format("orc").load("mytable").where(yourparitioncolumn)
除非直到你执行一个操作,什么都没有加载,因为load
(指向你的orc文件位置)是只是 DataFrameReader
中的一个函数,如下所示,它在执行之前不会加载。
def load(paths: String*): DataFrame = {
...
}
在上面的代码中,即 spark.read
... where
只是 where
当您指定此条件时,数据不会立即加载:-)
当你说 df.count
那么你的分区列将被应用到 orc 的数据路径上。
在 spark-shell
中,我如何加载一个现有的 Hive table,但只加载它的一个分区?
val df = spark.read.format("orc").load("mytable")
我正在寻找一种方法,以便它只加载此 table 的一个特定分区。
谢谢!
Spark API 中没有只加载分区目录的功能,但换句话说,分区目录只是 where 子句中的列,这里你可以对简单的 sql 查询在 where 子句中带有分区列,它将仅从分区目录中读取数据。看看这是否适合你。
val df = spark.sql("SELECT * FROM mytable WHERE <partition_col_name> = <expected_value>")
在spark.read.format
中没有直接的方法,但你可以使用where
条件
val df = spark.read.format("orc").load("mytable").where(yourparitioncolumn)
除非直到你执行一个操作,什么都没有加载,因为load
(指向你的orc文件位置)是只是 DataFrameReader
中的一个函数,如下所示,它在执行之前不会加载。
def load(paths: String*): DataFrame = {
...
}
在上面的代码中,即 spark.read
... where
只是 where
当您指定此条件时,数据不会立即加载:-)
当你说 df.count
那么你的分区列将被应用到 orc 的数据路径上。