我正在研究一个Spark SQL作业(Spark 1.6.0),由于200个分区上的数据严重偏差而导致性能不佳,大部分数据都在1个分区中: 我想知道的是......在用户界面中是否有任何东西可以帮助我找到有关数据分区方式的更多信息?从这看起来,我不知道数据帧被分区的列。我怎么能找到它? (除了查看代码之外 - 我想知道日志和/或用户界面中是否有任何可以帮助我的内容)?
其他细节,这是使用Spark的数据帧API,Spark版本1.6。基础数据以镶木地板格式存储。
答案 0 :(得分:2)
Spark UI和日志对此不会有太大帮助。 Spark使用simple hash partitioning算法作为几乎所有内容的默认值。正如您在此处所看到的,这基本上回收了Java hashCode
方法。
我建议如下:
hashCode
数据,然后取模数来查看碰撞情况。找到碰撞源后,您可以尝试使用一些技术将其删除:
hashCode
功能(Java中的默认功能并不是那么好)