Проблема в том, что, хотя вы и говорите, что этот запрос работает в Vertica, ваш запрос не написан в синтаксисе SQL, который Vertica распознает.Ваш запрос должен быть переписан как:
SELECT date(time_stamp) AS DATE, (subscriber) AS IMSI, (server_hostname) AS WEBSITE, (bytes_in) AS DOWNLINK, (bytes_out) AS UPLINK,(connections_out) AS CONNECTION
FROM traffic.stats
WHERE DATE(time_stamp) between '2019-01-25' AND '2019-01-29'
Исправляя все эти ошибки, ваш метод sqlContext.read
должен выглядеть следующим образом.
df = sqlContext.read.format("JDBC").options(
url = url,
query = "SELECT date(time_stamp) AS DATE, (subscriber) AS IMSI, (server_hostname) AS WEBSITE, (bytes_in) AS DOWNLINK, (bytes_out) AS UPLINK,(connections_out) AS CONNECTION FROM traffic.stats WHERE DATE(time_stamp) between '2019-01-25' AND '2019-01-29'",
**properties
).load()
df.show()
Или вы можете использовать псевдоним таблицы как подпрограмму-просите и используйте dbtable
вместо query
.
df = sqlContext.read.format("JDBC").options(
url = url,
dbtable = "(SELECT date(time_stamp) AS DATE, (subscriber) AS IMSI, (server_hostname) AS WEBSITE, (bytes_in) AS DOWNLINK, (bytes_out) AS UPLINK,(connections_out) AS CONNECTION FROM traffic.stats WHERE DATE(time_stamp) between '2019-01-25' AND '2019-01-29') temp",
**properties
).load()
df.show()