建议什么-在spark表中保留空列表/数组还是null?

kxeu7u2r  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(372)

我有一个大的spark表,其中包含混合数据类型string、arrays、maps数组和map列本质上是稀疏的。我应该在这些列的值中保留空数组还是将它们设为null?类似地,建议使用空字符串“”存储还是空字符串?好的做法是什么?两者的优缺点是什么?

sg3maiej

sg3maiej1#

一般来说,我总是尽量用 NULL 值而不是空字符串或数组。我的主要原因是他在spark中如何处理它们,例如连接两个Dataframe时。 NULL 在联接中忽略值,但不忽略空字符串或列表。这通常会导致数据非常倾斜,这会严重减慢转换速度。关于倾斜数据的一些信息可以在这里找到[外部链接]。
此外, NULL 值在函数中也经常被忽略,例如 coalesce 列[docs], count 聚合[相关问题]或 first(col, ignorenulls=True) [文档]。如果您想按预期的方式使用这些函数,我还建议您使用 NULL 超过空字符串/列表。
总结一下:使用 NULL 与其他值(如空字符串或列表)相比,它允许您获得更多本机spark功能,我建议您使用 NULL 如果可能的话。

相关问题