我想保留一个非常宽的sparkDataframe(>100000列),它是稀疏填充的(>99%的值为null),同时只保留非null值(以避免存储成本):
这种用例的最佳格式是什么(hbase、avro、parquet等)?
在写入时,应该指定什么来忽略空值?
请注意,我已经尝试了Parquet和avro与一个简单的 df.write statement
-对于大小约为100x130k的df,parquet的性能最差(约55mb),而avro的性能最差(约15mb)。对我来说,这意味着所有的空值都被存储。
谢谢!
1条答案
按热度按时间23c0lvtd1#
spark到json/sparsevector(来自bluephantom)
在pyspark中使用ml。否则转换为scala。
读取时返回:
Spark至avro/avro2tf(自py-r)
本教程中介绍的avro2tf库似乎是直接利用avro的一个有趣的替代方法。结果,稀疏向量将被编码如下: