首页 > 解决方案 > Spark写入多个文件

问题描述

我有两个具有不同过滤条件的数据帧,我需要将两个数据帧都写入 hdfs 同一个文件夹。我应该如何在一个拥抱文件夹中写入两个数据框。

标签: scalaapache-spark

解决方案


您可以使用转换创建一个数据框union

scala> val firstDF = List((1,2,3),(4,5,6)).toDF("a","b","c")
firstDF: org.apache.spark.sql.DataFrame = [a: int, b: int ... 1 more field]

scala> firstDF.show
+---+---+---+
|  a|  b|  c|
+---+---+---+
|  1|  2|  3|
|  4|  5|  6|
+---+---+---+


scala> val secondDF = List((7,8,9),(10,11,12)).toDF("a","b","c")
secondDF: org.apache.spark.sql.DataFrame = [a: int, b: int ... 1 more field]

scala> secondDF.show
+---+---+---+
|  a|  b|  c|
+---+---+---+
|  7|  8|  9|
| 10| 11| 12|
+---+---+---+


scala> val thirdDF = firstDF.union(secondDF)
thirdDF: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [a: int, b: int ... 1 more field]

scala> thirdDF.show
+---+---+---+
|  a|  b|  c|
+---+---+---+
|  1|  2|  3|
|  4|  5|  6|
|  7|  8|  9|
| 10| 11| 12|
+---+---+---+

然后您可以使用您喜欢的序列化格式将其写入 HDFS 文件夹。


推荐阅读