Как использовать объявленную переменную даты при запуске pyspark sql? - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь выполнить запрос pyspark, объявив переменные даты и используя эти переменные в самом запросе. Однако выходные данные не отражают фильтр даты. мой существующий код ниже

strt_dt = "'2018-01-01'"
 end_dt = "'2019-12-31'"


 df = sqlc.sql('Select * from tbl where dt > {0} and dt < {1}'.format(strt_dt,end_dt))

, когда я проверяю максимальный (dt) df выше, он больше, чем 2019-12-31, что не должно быть в соответствии с кодом. Я могу дополнительно отфильтровать эту искру df для требуемого диапазона дат, используя приведенный ниже код (источник из Pyspark: фильтровать кадр данных на основе нескольких условий

 strt_dt = '2018-01-01'
 end_dt = '2019-12-31' 
 df = sqlc.sql('Select * from tbl')  
 df.filter((col('dt') >= F.lit(strt_dt)) & (col('dt') < F.lit(end_dt)))

Я хочу избежать фильтрации spark df, поскольку я не хочу создавать df со всеми данными. Пожалуйста, дайте мне знать, что я делаю неправильно в первом наборе кода.

PS: когда я объявляю переменные, отличные от типа данных date, в В первом блоке кода переменная работает для этого имени столбца, т. е. он указывает c на сегодняшний день тип данных, хранящийся в виде строки в моей таблице HIVE.

Заранее спасибо

...