Я пытаюсь понять, как Spark загружает данные из MySQL, читая журнал MySQL.Но я обнаружил, что Spark не добавляет фильтр даты в SQL-запрос, он генерирует, где я использую метод filter ().
Вот как я загружаю данные в Spark:
Properties configProps = new Properties();
// ... properties init
SparkSession spark = SparkSession.builder().enableHiveSupport().getOrCreate();
spark.read().jdbc("jdbc:mysql://localhost/testdb", "table", configProps)
.filter("user_id = 1 and date >= \"2019-02-01 00:00:00.000\" and date <= \"2019-02-01 23:59:59.999\"")
.write().saveAsTable("test_table");
Что я нахожу в журнале MySQL:
SELECT * FROM table WHERE user_id = 1
Дата не добавляется в предложение WHERE.Почему это происходит?Spark пытается загрузить данные всех дат из таблицы?В моей таблице будут миллионы записей, но каждый раз нужны только тысячи.
Я также пытался заменить filter () на where (), но не повезло.
Есть ли какие-нибудьКак заставить Spark использовать все критерии, которые я указал в методе filter ()?
PS: Я не нашел на сайте Spark ничего, описывающего внутреннюю работу Spark.Какие книги и сайты рекомендуется?Спасибо!