【问题标题】:How to join maps in Apache Spark and perform RDD operations on them?如何在 Apache Spark 中加入地图并对其执行 RDD 操作?
【发布时间】:2019-06-08 17:10:29
【问题描述】:

我一直在玩 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

【问题讨论】:

  • 您是在 Postgres 还是 Apache Spark 上运行这些查询?
  • 我写的查询示例是针对 Postgres 的,但我需要只使用 RDD 操作。

标签: sql csv apache-spark


【解决方案1】:

当您说您正在尝试加入“地图”时,您指的是 RDD 吗? Spark 数据包含在 RDD 中,可以使用映射转换进行转换。您无法使用 Spark SQL 的原因是什么?使用 Spark SQL 对 Spark 中的 DataFrame 执行此查询将是从该查询到您希望使用 Spark 实现的最简单的转换。

【讨论】:

  • 正如我在帖子中所写,我已经成功使用了 Spark SQL,但现在我必须执行 RDD 操作才能获得相同的结果。
  • 我问的是您无法使用 Spark SQL 的原因,以便我可以更准确地解决您的问题。
  • 这是一项任务,没有特别的原因。
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 2017-04-29
  • 1970-01-01
  • 2020-10-13
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多