python字典上的spark2-submit意外进行自动排序

时间:2019-08-08 14:50:31

标签: python pyspark-sql

在使用“ spark2-submit”时,Python dict发生了意外的排序行为。

[tmp.py]

   protected static function boot()
    {
        parent::boot();

        static::creating(function($item) {
             $item->event_id = Event::currentEventID();

        });
    }

预期:

d = {
    'name': 'stackoverflow',
    'email': 'atack@xxx.com',
    'zip': '628888',
}
print(d)

实际:

{ 'name': 'stackoverflow', 'email': 'atack@xxx.com', 'zip': '628888', }

> -bash-4.1$ spark2-submit tmp.py

我无法使用“ python或python3 tmp.py”命令。这是一个大故事。请忽略此。使用Python或Python3的方式,运行良好。我想使其通过 {'name': 'stackoverflow', 'zip': '628888', 'email': 'atack@xxx.com'} 19/08/08 09:33:35 INFO util.ShutdownHookManager: Shutdown hook called 19/08/08 09:33:35 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-9bb6bd82-ba2c-4715-b27a-6fdc41d3297b -bash-4.1$ 方式工作。

疑问,基于实际结果:

  1. 为什么要自动排序。 (据我了解,为提高Spark方面的性能,可以应用此逻辑。如果一次忽略。)
  2. 如果一次排序,则不会明智地使用“键”(如果一次,则spark2-submit应该放在顶部)
  3. 如果一次明智地使用“值”,那么email应该放在顶部。

想知道,它以哪种方式应用排序功能以及如何停止这种自动排序。我需要订单的方式与我们输入的方式相同。

谢谢

1 个答案:

答案 0 :(得分:1)

在python中,psql-client | |_ pkg | |_psql.go 键没有定义的排序顺序。您可以使用OrderedDict来维护关键顺序:https://docs.python.org/2/library/collections.html#collections.OrderedDict

示例:

dict

注意: 从Python3.7 +开始,字典实际上会保留其键插入顺序。 https://mail.python.org/pipermail/python-dev/2017-December/151283.html