hdfs与hive分区

8i9zcol2  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(450)

这可能是一件简单的事情,但我正在努力寻找答案。当数据被加载到hdfs时,它将被分发并加载到多个节点中。数据是分区和分布的。
对于hive,有一个单独的选项来划分数据。我很确定,即使您没有提到分区选项,在加载配置单元表时,数据也会被分割并分发到集群上的不同节点。在这种情况下,这个命令还有什么好处呢。

ghhkc1vu

ghhkc1vu1#

hdfs分区:主要处理节点上文件的存储。为了容错,文件在集群中复制(使用复制因子)
Hive分割:这是Hive中的一种优化技术。在hivedb中,在存储表的同时,为了获得更好的查询性能,我们进行了分区。分区提供了有关数据如何存储在配置单元中以及如何读取数据的信息。可以在表数据的列级别控制配置单元分区。

vsaztqbk

vsaztqbk2#

总结hadoop v1-v2.x的评论和建议:
逻辑分区,例如与字符串中的日期或字段相关的分区,如上面的注解所示,只能在hive、hcat或其他sql或并行引擎中使用支持分区的文件格式(parquet、orc、csv都可以,但是xml很难或几乎不可能进行分区)
逻辑分区(如在hive中,hcat)可以用来代替没有索引的分区
通过在hdfs设置期间定义分区,可以在本地或分布式节点上实现“hdfs存储分区”,请参阅https://docs.hortonworks.com/hdpdocuments/hdp2/hdp-2.6.5/bk_cluster-planning/content/ch_partitioning_chapter.html
hdfs能够在节点上“平衡”或“分配”块
在本机上,块不能被hdfs根据其内容拆分和分发到文件夹,只能整体移动到另一个节点
块(不是文件!)根据hdfs复制因子在hdfs群集中复制:

$ hdfs fsck /

(感谢david和kris在上面的讨论,也解释了其中的大部分内容,请把这篇文章作为总结)

相关问题