【问题标题】:How to improve performance of loading data from NON Partition table into ORC partition table in HIVE如何提高将数据从非分区表加载到 HIVE 中的 ORC 分区表的性能
【发布时间】:2015-05-09 07:54:41
【问题描述】:

我是 Hive 查询的新手,我正在寻找从 Hive 表中检索数据的最佳实践。我们启用了 TeZ 的执行引擎并启用了矢量化。

我们想从 Hive 表中进行报告,我从 TEZ 文档中读到它可以用于实时报告。场景来自我的 WEB 应用程序,我想在 UI 上显示 Hive Query Select * from Hive table 的结果,但是对于任何查询,即使 hive 表有 60 GB 数据,在 hive 命令提示符中至少需要 20-60 秒。

1) 谁能告诉我如何通过查询 Hive 表来显示实时报告并在 10-30 秒内立即在 UI 上显示结果

2) 我们发现的另一个问题是,最初我们有未分区表指向 HDFS 中的 Blob/文件,当我们将数据从未分区表转储到 ORC 时,它的大小为 60 GB,有 200 列表(ORC表是分区的),需要3+小时,有没有办法提高将数据转储到ORC表中的性能。

3) 当我们用分桶查询 Non Partition 表时,插入 hive 表和查询比 ORC 表上的 select 查询花费更少的时间,但是 hive 表中的记录数增加了 ORC 表的 SELECT 查询优于 table用桶。有没有办法提高小型数据集的性能。由于是初始阶段,我们每个月都会将 50 GB 数据加载到 Hive 表中。但它可以增加,我们希望提高将数据加载到 Orc 分区表中的性能。

4) TEZ 支持交互式、低延迟和对报告的深入支持。如何在人工响应时间内(即 5-40 秒)使我的深入报告能够从 Hive(应该是交互式的)获取数据。

我们正在测试 4 个节点,每个节点有 4 个 cpu 内核和 7 GB RAM 和 3 个连接到每个 VM 的磁盘。

谢谢, 马亨德

【问题讨论】:

    标签: hadoop hive hadoop-yarn azure-hdinsight


    【解决方案1】:

    为了提高向ORC表插入数据的速度,可以试试下面parameters

    hive.exec.orc.memory.pool 
    hive.exec.orc.default.stripe.size
    hive.exec.orc.default.block.size 
    hive.exec.orc.default.buffer.size
    dfs.blocksize
    

    此外,您可能会看到,压缩是否也可以帮助您。例如:

    SET mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
    SET hive.exec.compress.intermediate = true;
    

    希望对你有帮助!

    【讨论】:

    • 谢谢胜利者我会尝试
    • @user145610,您是否已经得出结论如何加快向ORC表中插入数据?
    【解决方案2】:

    首先。 HIVE 不适用于实时数据处理。无论数据多小,查询都需要一段时间才能返回数据。

    hive 的真正强大之处在于批量处理大量数据。

    【讨论】:

    • SUnil,HDInsight/Hadoop 中是否有任何方法可以将我的查询结果绑定到 UI。 (pz 忽略 HBase)。我听说过 Node+hive ,它在 Microsoft Azure 中可用吗?我们希望使用 tez、spark 等提供交互式查询
    • 我相信 tez 和 spark 在这个领域很有前途。您可以尝试这些选项。
    • 通过 TEZ 我无法实现实时绑定...还没有尝试过 Spark..让我用 spark 进行检查
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多