首页 > 解决方案 > spark中处理重复值较多的列时尽量减少存储空间

问题描述

我有一个带有相应城市/州的 poi 数据数据框。我正在寻找一种在 pyspark 中尽可能减少此数据的数据存储空间的方法。我认为可能有用的一个特性是 city 和 state 列包含大量重复数据。

+------+---------+---------+
|  poi | city    |state    |
+------+---------+---------+
| abcd | New York| New York|
| cdef | New York| New York|
| xcvd | Chicago | Illinois|
| hjkq | New York| New York|
| acdr | Austin  | Texas   |
+------+---------+---------+

我想如果我读取数据,按城市和州分区,然后将其保存到磁盘,可能会节省更多空间。

df = sqlContext.read.csv(inFile,sep="\t", quote=None, header=False)
df.repartition("city",'state').write.option("header", "true").partitionBy(["city",'state']).csv(outFile,compression="gzip")

与原始 gz 文件相比,这并没有节省任何空间。我不会经常查询这个表,所以主要目的只是为了节省磁盘空间。还有什么我可以做的吗?

标签: apache-sparkpysparkapache-spark-sql

解决方案


推荐阅读