如何加入两个镶木地板数据集?

Posted

技术标签:

【中文标题】如何加入两个镶木地板数据集?【英文标题】:How to join two parquet datasets? 【发布时间】:2017-04-19 12:32:45 【问题描述】:

我正在使用 Java 从 Spark 中的 Parquet 文件中加载两个数据集。我需要创建一个新的作为两者的组合。在常规 SQL 中,我会加入这些表,应用一些 where 条件并创建一个新表。有没有办法在 Spark (SQL) 中实现这一点?我读到 RDD 可以实现,但我真的不想将数据写回磁盘。

【问题讨论】:

在 sparkSQL 中可以使用典型的连接操作,例如join,union。等等。 你想要什么输出只需加入两个数据集或其他任何东西 【参考方案1】:

这几乎就像 Spark SQL 是为给定 parquet 设计的一样是默认格式。

读取 parquet 文件很简单,看起来像:

val fileOne = spark.read.load(...)
val fileTwo = spark.read.load(...)

加入 Spark SQL 也是一件轻而易举的事(并且隐藏了您是否处理 parquet 数据集或其他任何内容)。使用join 运算符。

val joined = fileOne.join(fileTwo).where(...)

这样,保存到数据存储中,比如一个大的(ger)镶木地板文件又是一件轻而易举的事。

joined.write.save(...)

你已经完成了。恭喜!

请阅读Spark SQL 和Dataset API。

【讨论】:

以上是关于如何加入两个镶木地板数据集?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据表中的数据获取镶木地板文件名

如何根据模式动态生成数据集?

pyspark 使用动态日期范围读取镶木地板文件分区数据

如何从 Spark 2.0 中的 DataFrame 列创建数据集?

我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗

使用空数据集的Spark SQL连接会导致更大的输出文件大小