我正在努力尝试将每个RDD分区写入具有自己目录的独立parquet文件。示例将是:
<root>
<entity=entity1>
<year=2015>
<week=45>
data_file.parquet
这种格式的优点是我可以直接在SparkSQL中使用它作为列,我不必在实际文件中重复此数据。这将是到达特定分区的好方法,而无需在其他地方存储单独的分区元数据。
作为前一步,我从大量gzip文件中加载了所有数据,并根据上述键进行了分区。
可能的方法是将每个分区作为单独的RDD,然后编写它,尽管我找不到任何好的方法。
任何帮助都将不胜感激。顺便说一句,我是这个堆栈的新手。
我认为公认的答案没有恰当地回答这个问题。
试试这样的东西:
df.write.partitionBy("year", "month", "day").parquet("/path/to/output")
您将获得分区的目录结构。
我认为可以通过调用foreachParttion(f: Iterator[T]=
在您提供给foreachParttion
的函数中:
hdfs://localhost:9000/parquet_data/year=x/week=y