我一直在使用Apache Spark,首先我学习了PostgreSQL,我有一些需要在Spark上运行的查询。我设法在Spark SQL中将它们作为SQL字符串运行,但是现在我必须执行RDD操作才能获得相同的结果。我将数据从csv加载到地图。现在,我必须在那些地图中选择特定的列,但是我不知道如何将它们连接起来(多个地图/ csv文件)。我的第二个问题是如何最好地执行RDD操作,以便从PostgreSQL查询中获得相同的结果?
我尝试阅读有关RDD的操作,其中包括转换,其中包括连接,但不允许我连接地图。
查询之一:
SELECT Tournaments.TYear,Countries.Name,Max(Matches.MatchDate) -
Min(Matches.MatchDate) AS LENGTH
FROM Tournaments,Countries,Hosts,Teams,Matches
WHERE Tournaments.TYear = Hosts.TYear AND Countries.Cid = Hosts.Cid
AND (Teams.Tid = Matches.HomeTid OR Teams.Tid = Matches.VisitTid) AND
date_part('year', Matches.MatchDate)::text LIKE (Tournaments.TYear ||
'%')
GROUP BY Tournaments.TYear,Countries.Name
ORDER BY LENGTH,Tournaments.TYear ASC
答案 0 :(得分:0)
当您说要加入“地图”时,是指RDD吗? Spark数据包含在RDD中,可以使用地图转换对其进行转换。您无法使用Spark SQL的原因是什么?使用Spark SQL在Spark中的DataFrames上执行此查询将是从此查询到您希望使用Spark实现的最简单的转换。