Вычислить запрос postgresql с помощью Spark SQL - PullRequest
0 голосов
/ 25 июня 2019

Так что в основном мне нужно выполнить два следующих запроса, используя Spark SQL, но я не могу понять, как идентифицировать, без того, чтобы мой компилятор выдавал некоторые случайные ошибки.

Запрос 1:

SELECT DISTINCT c.name, count(p.pid)FROM clubs c
JOIN teams t on c.cid = t.cid
JOIN tournaments d on t.tid = t.tid
JOIN players p on p.ncid = c.ncid
WHERE c.cid = 45 AND d.tyear = 2014
GROUP BY c.name
ORDER BY count DESC

Запрос 2:

SELECT DISTINCT t.tyear, c.name, (SELECT max(m.matchdate) -      min(m.matchdate) FROM matches m WHERE t.tyear = date_part('year', m.matchdate)) AS days  FROM tournaments t
JOIN hosts h ON t.tyear = h.tyear
JOIN countries c on c.cid = h.cid
JOIN stadiums s on s.cid = c.cid
JOIN matches m on m.sid = s.sid
GROUP BY t.tyear, c.name, s.sid
ORDER BY days DESC

Я уже пытался выполнить запрос 1, как этот, но он не работал:

spark1 = SparkSession.builder.appName('spark').getOrCreate()
teams = spark1.read.csv("teams.csv", header = True, mode="DROPMALFORMED").cache()
clubs = spark1.read.csv("clubs.csv", header=True, mode="DROPMALFORMED").cache()
tournaments = spark1.read.csv("tournaments.csv", header = True, mode="DROPMALFORMED")
players = spark1.read.csv("players.csv", header = True, mode="DROPMALFORMED")

spark1.sql('SELECT DISTINCT c.name, count(p.pid)FROM clubs JOIN teams t on c.cid = t.cid JOIN tournaments d on t.tid = t.tid JOIN players p on p.ncid = c.ncid WHERE c.cid = 45 AND d.tyear = 2014 GROUP BY c.name ORDER BY count DESC').show()

любая помощь будет оценена!

...