Спарк-оболочка загрузить существующую таблицу кустов по разделам? - PullRequest
0 голосов
/ 30 апреля 2020

В spark-shell как загрузить существующую таблицу Hive, но только один из ее разделов?

val df = spark.read.format("orc").load("mytable")

Я искал способ, чтобы он загружал только один конкретный раздел этой таблицы.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 30 апреля 2020

Прямого пути в spark.read.format нет, но вы можете использовать where условие

val df = spark.read.format("orc").load("mytable").where(yourparitioncolumn)

, если , пока вы не выполните действие, ничего не загружено , поскольку load (указывая на ваше местоположение файла или c) просто забавно c в DataFrameReader, как показано ниже, он не загружается, пока не выполнено действие.

см. здесь DataFrameReader

 def load(paths: String*): DataFrame = {
...
}

В приведенном выше коде, т.е. spark.read .... where - это просто where условие, когда вы указываете это, опять данные не будут загружаться немедленно :-)

когда вы говорите df.count, тогда ваш столбец разделов будет применен к пути данных или c.

0 голосов
/ 30 апреля 2020

В Spark API нет функции для загрузки только каталога разделов, но в другом случае это каталог разделов - это не что иное, как столбец в предложении where, здесь вы можете просто выполнить простой запрос sql со столбцом раздела в предложении where, который будет читать данные только из раздела директоты. Посмотрите, будет ли это работать для вас.

val df = spark.sql("SELECT * FROM mytable WHERE <partition_col_name> = <expected_value>")
...