#apache-spark
Вопрос:
Я читаю данные из одной из моих таблиц СУБД, используя Spark, как показано ниже.
val data = spark.read.format("jdbc")
.option("url", "url")
.option("driver", "driver")
.option("user", "user")
.option("password", "pwd")
.option("dbtable", "query")
.option("partitionColumn", partitionColumn)
.option("numPartitions", numPartitions)
.option("lowerBound", lowerBound)
.option("upperBound", upperBound)
.load()
Согласно официальной документации, границы: lowerBound
amp; upperBound
могут иметь типы данных Int, Datetime or Timestamp
. Эти значения используются для определения того, в какой раздел передаются данные во время чтения, и не используются для фильтрации данных.
Что делать, если я укажу диапазон привязки, который охватывает определенный набор данных ?
Например, я использую employeestartdate
в качестве столбца раздела, и минимальная дата этого столбца 2020-02-01 10:12:00 000
равна, а максимальная дата в столбце равна 2020-11-20 11:11:43 432
Я могу просто указать employeestartdate
в качестве столбца раздела и вышеуказанные минимальные и максимальные даты в качестве нижних и верхних значений для данных раздела во время чтения.
Что, если я дам границы, которые охватывают все даты для этого конкретного столбца ? Например, если я укажу нижнюю границу как начало года, например 2020-01-01 00:00:00 000
, а верхнюю границу как максимальное значение этого года, например 2020-12-31 23:59:59 999
?
Будет ли раздел spark правильно охватывать все данные, учитывая даты, которые я указал для нижней и верхней границ, охватывающих каждую существующую дату в этом столбце.
Или я должен указывать только даты или значения в границах, которые существуют в таблице (минимальные и максимальные значения столбца разделов) ?
Может ли кто-нибудь прояснить мои сомнения ? Любая помощь будет признательна.
Комментарии:
1. Вы должны прочитать это, waitingforcode.com/apache-spark-sql/…