hadoop - HDFS 与 HIVE 分区

标签 hadoop hive hdfs cloudera partitioning

这可能是一件简单的事情,但我正在努力寻找答案。当数据加载到 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/

相关文章:

java - Titan-1.0.0+Hbase-0.98.20使用java远程模式连接错误

java - 在 hbase 中,无法识别 dir hdfs ://test/apps/hbase/data/lib, 的 fs 忽略了 java.io.IOException

hadoop - 将文本分隔表的输出写入本地UNIX时hadoop fs -cat命令中的错误

java - Hive Jdbc连接错误,出现NoClassDefFoundError

regex - 其他记录之间的字符串列表加载错误Hive

hive - 根据列删除配置单元中的重复行

java - Hadoop 分布式文件系统是否像 Google 文件系统那样支持任何更新操作?

hadoop - 如何使用Hadoop从csv文件读取1000万条记录并为每个记录创建pdf

hadoop - 为什么我们在hadoop中使用分布式缓存?

mongodb - 是否可以将数据库直接从 HDFS 作为 DataFrame 加载到 spark 中?