gpt4 book ai didi

hadoop - 如何在 Hive 中加载分布式数据?

转载 作者:可可西里 更新时间:2023-11-01 16:23:46 26 4
gpt4 key购买 nike

我的目标是使用 Hive 执行 SELECT 查询

当我在一台机器(namenode)上有一个小数据时,我开始:1-创建包含此数据的表:create table table1 (int col1, string col2)2-Loading the data from a file path: load data local inpath 'path' into table table1;3-执行我的 SELECT 查询:select * from table1 where col1>0

我有 1000 万行的庞大数据,单台机器装不下。假设 Hadoop 将我的数据分成 10 个数据节点,每个数据节点包含 100 万行。

由于数据量巨大,将数据检索到一台计算机是不可能的,或者如果可能的话将花费大量时间。

Hive 会在每个数据节点创建一个表并执行 SELECT 查询吗还是 Hive 将所有数据移动到一个位置(数据节点)并创建一个表? (这是低效的)

最佳答案

好的,所以我将介绍将数据加载到 Hive 时发生的情况。

1000万行的文件会被切割成64MB/128MB的 block 。Hadoop,而不是 Hive,会将 block 分发到集群上的不同从节点。这些 block 将被复制多次。默认为 3。

每个从节点将包含组成原始文件的不同 block ,但没有机器会包含每个 block 。但是,由于 Hadoop 复制 block ,所以集群上必须至少有足够的空闲空间来容纳 3 倍的文件大小。

当数据在集群中时,Hive 会将表投影到数据上。查询将在 Hadoop 选择的机器上运行,以处理构成文件的 block 。

虽然 1000 万行并没有那么大。除非表格有 100 列,否则在任何情况下都应该没问题。但是,如果您要在查询中执行 select *,请记住所有数据都需要发送到运行查询的机器。这可能需要很长时间,具体取决于文件大小。

希望我涵盖了您的问题。如果没有,请告诉我,我会尽力提供进一步的帮助。

关于hadoop - 如何在 Hive 中加载分布式数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com