【问题标题】:Loading data into Partitions in Hive将数据加载到 Hive 中的分区中
【发布时间】:2015-03-07 10:20:28
【问题描述】:

请帮助我澄清我的疑问。我不确定在 HIVE 中分区的目的。这是我想要做的。下面是我的数据文件:

文件: 基肖尔,31 拉梅什,32 基肖尔,33 拉梅什,34

我创建了一个Partitioned managed table EMP,如下图:

创建表 EMP (name string,age int) 由(国家字符串,州字符串)分区 以','结尾的行格式分隔字段;

现在我正在加载数据,如下所示: 将数据本地 inpath '/../../file' 加载到表 EMP 分区(国家 = 'US',州 = 'Oklahoma');

所以现在我的数据表应该是这样的:kishore,31,US,Oklahoma ramesh,32,US,Oklahoma kishore,33,US,Oklahoma ramesh,34,US,Oklahoma。

我的问题是分区在这里有什么用处?即使它是一个具有国家和州列的非分区表,如果我会给出 select * form EMP(对于非分区表)或 select * from EMP where country = US and state = Oklahoma(对于分区表),我得到相同的结果,它是一件事或同一件事。性能如何提升?

谢谢!

【问题讨论】:

    标签: hive


    【解决方案1】:

    查看此链接以更好地了解 Hive 中的分区,

    http://www.brentozar.com/archive/2013/03/introduction-to-hive-partitioning/

    关键是,

    1. 优化存储大数据(必须指定分区 键)
    2. 以上是根据查询模式指定的
    3. 静态和动态分区选项

    进一步阅读 --> https://www.safaribooksonline.com/library/view/programming-hive/9781449326944/

    【讨论】:

      【解决方案2】:

      您可以在 where 子句中将分区用作通常的列。 Hive 在打印 select 语句的输出时将其视为分区的列(列顺序在这里很重要)。但是,Hiveserver 知道哪一列是分区或哪一列不是,并使用此知识将查询转换为 mapreduce 作业。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        • 2016-12-13
        • 2012-10-20
        • 2021-06-22
        • 2016-07-15
        • 1970-01-01
        • 2015-05-09
        相关资源
        最近更新 更多