将spark中的DafaFrame划分为多个DataFrame并写入目录

时间:2017-09-28 13:47:47

标签: scala apache-spark

我们想将一个spark程序中的数据写入代表我们分区的目录中的s3。

示例:VisitFact DataFrame应该写入s3,分区是日期,小时,网站,让我们说具体的Df只有一天(dt = 2017-07-01),一小时(hh) = 02)和2个站点(10,11) 所以目录是:

  • 访问/ DT = 2017年7月1日/ HH = 02 / SITE_ID = 10
  • 访问/ DT = 2017年7月1日/ HH = 02 / SITE_ID = 11

我们需要检查数据框并将其拆分为多个df(在这种情况下为两个)

我希望这是通用的,因此定义分区的字段列表可以更改并且是N个元素

火花本身支持这个吗?什么是实现这一目标的有效方法 谢谢 Nir

2 个答案:

答案 0 :(得分:3)

是spark支持分区

你可以使用这样的东西

df.write.partitionBy("columns for partitioning").parquet("path to the top dir")

答案 1 :(得分:1)

同意Nir go with partition选择Hash Partitioning或 范围分区

https://spark.apache.org/docs/latest/sql-programming-guide.html#bucketing-sorting-and-partitioning