У меня Spark 1.6 работает на Python 3.4, извлекает данные из моей базы данных Vertica для работы с ним по приведенному ниже запросу, Spark DataFrames поддерживают предикатное нажатие с исходниками JDBC, но термин предикат используется в строгом смысле SQL.Это означает, что он охватывает только предложение WHERE.Более того, похоже, что он ограничен логическим соединением (нет IN и OR, я боюсь) и простыми предикатами, он показывает эту ошибку: java.lang.RuntimeException: Опция 'dbtable' не указана
БД содержитбольшие объемы данных около 100 миллиардов, и я не могу получить данные, а spark1.6 не позволяет мне использовать только запрос dbtable в качестве schema.table, и я получил следующую ошибку:
java.lang.RuntimeException: Option 'dbtable' not specified
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
url = "*******"
properties = {"user": "*****", "password": "*******", "driver": "com.vertica.jdbc.Driver" }
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()
Я пробовал приведенный ниже запрос, но безрезультатно. Это занимает много времени без использования функции предела.
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-27' AND '2019-01-29'"
df = sqlContext.read.format("JDBC").options(
url = url,
dbtable="( " + query + " ) as temp",
**properties
).load()
В любом случае можно ли прочитать данные, как указано выше, или прочитать их как фрейм данных с конкретным запросом?
Я попытался сократить время, установив больше условий и ограничений, но он отказался от условий $ \, даже если удалить условия, которые он дает мне, «Подзапрос в FROM должен иметь псевдоним», это запрос:
SELECT min(date(time_stamp)) AS mindate,max(date(time_stamp)) AS maxdate,count (distinct date(time_stamp)) AS noofdays, (subscriber) AS IMSI, (server_hostname) AS WEBSITE, sum(bytes_in) AS DL, sum(bytes_out) AS UL, sum(connections_out) AS conn from traffic.stats where SUBSCRIBER like '41601%' and date(time_stamp) between '2019-01-25' and '2019-01-29'and signature_service_category = 'Web Browsing' and (signature_service_name = 'SSL v3' or signature_service_name = 'HTTP2 over TLS') and server_hostname not like '%.googleapis.%' and server_hostname not like '%.google.%' and server_hostname <> 'doubleclick.net' and server_hostname <> 'youtube.com' and server_hostname <> 'googleadservices.com' and server_hostname <> 'app-measurement.com' and server_hostname <> 'gstatic.com' and server_hostname <> 'googlesyndication.com' and server_hostname <> 'google-analytics.com' and server_hostname <> 'googleusercontent.com' and server_hostname <> 'ggpht.com' and server_hostname <> 'googletagmanager.com' and server_hostname is not null group by subscriber, server_hostname