这可能是一件简单的事情,但我正在努力寻找答案。当数据加载到 HDFS 时,其分布并加载到多个节点中。数据被分区和分布。
对于 HIVE,有一个单独的选项来对数据进行分区。我很确定,即使您没有提及 PARTITION 选项,在加载配置单元表时,数据也会被拆分并分发到集群上的不同节点。在这种情况下,此命令有什么额外好处。
最佳答案
总结评论和 Hadoop v1-v2.x:
逻辑分区,例如。与字符串中的日期或字段相关,如上面的评论中所写,只能在 hive、hcat 或在 hadoop 之上工作的另一个 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 能够在节点上“平衡”或“分配” block
HDFS本身不能根据内容将block拆分分发到文件夹,只能整体移动到另一个节点
block (不是文件!)根据 HDFS 复制因子在 HDFS 集群中复制:
$ hdfs fsck /
(感谢 David 和 Kris 上面的讨论,也解释了大部分内容,请将此帖子作为摘要)
关于hadoop - HDFS 与 HIVE 分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45169113/