使用 Apache Spark / Spark SQL 加入文件

Posted

技术标签:

【中文标题】使用 Apache Spark / Spark SQL 加入文件【英文标题】:Join files using Apache Spark / Spark SQL 【发布时间】:2015-06-22 06:49:35 【问题描述】:

我正在尝试使用 Apache Spark 根据一些公共字段比较两个不同的文件,并从两个文件中获取值并将其写入输出文件。

我正在使用 Spark SQL 来连接这两个文件(在将 RDD 存储为表之后)。

这是正确的方法吗?

我们可以在没有 Apache SQL 的情况下 compare / join 文件吗?

请在这方面给我建议。

【问题讨论】:

【参考方案1】:

尝试在数据集的两个数据帧之间进行内连接以匹配记录。

【讨论】:

【参考方案2】:

如果你使用普通 spark,你可以加入两个 RDD。

let a = RDD<Tuple2<K,T>>
let b = RDD<Tuple2<K,S>>
RDD<Tuple2<K,Tuple2<S,T>>> c = a.join(b)

这会为密钥 K 生成每对的 RDD。RDD 上还有 leftOuterJoin、rightOuterJoin 和 fullOuterJoin 方法。

因此,您必须映射两个数据集以生成由您的公共键索引的两个 RDD,然后加入它们。这是我引用的documentation。

【讨论】:

谢谢。是否可以从两个文件中仅获取必填字段而不是所有字段?我们应该使用什么转换来获得它?

以上是关于使用 Apache Spark / Spark SQL 加入文件的主要内容,如果未能解决你的问题,请参考以下文章

在执行spar-sql程序中报错:java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/s

spark与flume整合

spark sql 小样

apache spark进程的CPU消耗

经典篇 | Apache Spark 内存管理详解

关于在使用sparksql写程序是报错以及解决方案:org.apache.spark.sql.AnalysisException: Duplicate column(s): "name&qu