metastore—我们可以预测hive select*查询结果的顺序吗?

ix0qys7i  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(445)

有没有可能 SELECT * query (no ORDER BY) 如果将相同的dbms用作元存储,是否总是相同的?
因此,只要mysql被用作元存储,那么 SELECT *; 查询将始终相同。如果使用postgres,相同数据上的顺序将始终相同,但与使用mysql时不同。我说的是同样的数据。
也许这一切都归结为一个问题:什么是默认的结果顺序,为什么mysql和postgres metastore的结果顺序不同。

smdncfj3

smdncfj31#

没有行的默认顺序,没有 ORDER BY 订单不能保证。此事实与所使用的元存储数据库无关。
一般来说,数据是由许多进程(Map器)并行读取的,在计算分割后,每个进程开始读取一些文件或几个文件,具体取决于计算的分割。所有的并行进程都可以处理不同数量的数据,并且运行在不同的节点上,每次的负载都不一样,所以根据太多的因素,比如节点负载、网络负载、每个进程的数据量等,它们在不同的时间开始返回行和结束,去除所有这些因素可以提高订单预测的准确性。也就是说,单线程顺序文件读取将以与文件中相同的顺序返回行。但这不是数据库的工作方式。
同样根据codd的关系理论,列和行的顺序对于数据库来说是无关紧要的。

相关问题