我们可以预测Hive SELECT *查询结果的顺序吗?

时间:2018-11-29 09:54:32

标签: hive metastore hive-metastore

如果将相同的DBMS用作Metastore,SELECT * query (no ORDER BY)的结果的顺序是否可能总是相同?

因此,只要将MySQL用作Metastore,SELECT *;查询的结果顺序将始终相同。如果使用Postgres,则在相同数据上的顺序将始终相同,但与使用MySQL时的顺序不同。我正在谈论相同的数据。

也许所有这些都归结为以下问题:默认结果的顺序是什么,以及对于MySQL和Postgres Metastore为什么不同?

1 个答案:

答案 0 :(得分:0)

没有默认的行顺序,如果没有ORDER BY,则不能保证顺序。这个事实与所使用的Metastore数据库无关。

通常,许多进程(映射器)并行读取数据,计算拆分之后,每个进程都将根据计算的拆分开始读取某个文件或几个文件。所有并行进程可以处理不同数量的数据并在不同的节点上运行,每次负载都不相同,因此它们取决于节点负载,网络负载,容量等太多因素而开始返回行并在不同的时间完成每个流程等数据的数量等。除去所有这些因素,可以提高订单预测的准确性。假设单线程顺序文件读取将以与文件中相同的顺序返回行。但这不是数据库的工作方式。

根据Codd的关系理论,列和行的顺序对数据库也不重要。