PySpark Отключение фильтра отметок времени - PullRequest
0 голосов
/ 06 декабря 2018

Я использую PySpark версии 2.4 для чтения некоторых таблиц, используя jdbc с драйвером Postgres.

    df = spark.read.jdbc(url=data_base_url, table="tablename", properties=properties)

Один столбец является столбцом отметки времени, и я хочу отфильтровать его следующим образом:

    df_new_data = df.where(df.ts > last_datetime )

Таким образом, фильтр отбрасывается как запрос SQL, но формат даты и времени неправо.Так что я попробовал этот подход

    df_new_data = df.where(df.ts > F.date_format( F.lit(last_datetime), "y-MM-dd'T'hh:mm:ss.SSS") )

, но тогда фильтр больше не сбрасывался.

Может кто-нибудь уточнить, почему это так?

1 Ответ

0 голосов
/ 07 декабря 2018

При загрузке данных из таблицы базы данных, если вы хотите отправить запросы в базу данных и получить несколько строк результатов, вместо предоставления «таблицы», вы можете предоставить «Запрос» и вернуть только результат в виде DataFrame.,Таким образом, мы можем использовать ядро ​​базы данных для обработки запроса и возврата в Spark только результатов.

Параметр table определяет таблицу JDBC для чтения. Вы можете использовать все, что допустимо в предложении FROM SQL-запроса .Обратите внимание, что в запросе обязательно указывать псевдоним.

pushdown_query = "(select * from employees where emp_no < 10008) emp_alias"
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties)
df.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...