当前位置: 首页 > 知识库问答 >
问题:

为什么在hive中查询拼花文件比文本文件慢?

郜修雅
2023-03-14

我决定使用Parquet作为配置单元表的存储格式,并且在我的集群中实际实现它之前,我决定运行一些测试。令人惊讶的是,在我的测试中,Parquet的速度比纯文本文件更慢,而不是它比纯文本文件更快的一般概念。

请注意,我在MapR上使用的是HIVE-0.13

----------------------------------------------------------
|             | Table A | Table B | Table C |            |
----------------------------------------------------------
| Format      | Text    | Parquet | Parquet |            |
| Size[Gb]    | 2.5     | 1.9     | 1.9     |            |
| Comrepssion | N/A     | N/A     | Snappy  |            |
| CPU [sec]   | 123.33  | 204.92  | N/A     | Operation1 |
| Time [sec]  | 59.057  | 50.33   | N/A     | Operation1 |
| CPU [sec]   | 51.18   | 117.08  | N/A     | Operation2 |
| Time [sec]  | 25.296  | 27.448  | N/A     | Operation2 |
| CPU [sec]   | 57.55   | 113.97  | N/A     | Operation3 |
| Time [sec]  | 20.254  | 27.678  | N/A     | Operation3 |
| CPU [sec]   | 57.55   | 113.97  | N/A     | Operation4 |
| Time [sec]  | 20.254  | 27.678  | N/A     | Operation4 |
| CPU [sec]   | 127.85  | 255.2   | N/A     | Operation5 |
| Time [sec]  | 29.68   | 41.025  | N/A     | Operation5 |
    null

编辑

我将ORC添加到存储格式列表中,并再次运行测试。遵循细节。

行计数操作

ORC与快速累积CPU-98.27秒

列操作的平均值

文本格式累计CPU-128.79秒

那是不是说兽人比拼板更快?或者我可以做些什么来使它在查询响应时间和压缩比方面更好地工作?

谢谢!

共有1个答案

景才英
2023-03-14

首先,我想指出的是,几乎不可能用所给出的细节来回答你的问题。

几点:

>

  • 在分布式环境中测量时间并不是确定某件事是否慢的方法(如果您有许多查询在运行并竞争资源,则您并不是在测量您认为正在测量的内容)

      null

    根据用例的不同,某些参数可以根据具体的用例进行调优。

  •  类似资料:
    • 我是Spark的新手。我尝试在本地模式(windows)下使用spark java将csv文件保存为parquet。我得到了这个错误。 原因:org.apache.spark.Spark异常:写入行时任务失败 我引用了其他线程并禁用了spark推测 set("spark.speculation "," false ") 我还是会出错。我在csv中只使用了两个专栏进行测试。 输入: 我的代码: 请帮

    • 我们正在寻找一种解决方案,以便创建一个外部配置单元表,根据parquet/avro模式从parquet文件中读取数据。 换句话说,如何从拼花/avro模式生成hive表? 谢谢:)

    • 使用Python 3.6在Amazon EMR集群(1个主节点,2个节点)上运行Spark 2.4.2 我正在Amazon s3中读取对象,将其压缩为拼花格式,并将其添加(附加)到现有的拼花数据存储中。当我在pyspark shell中运行代码时,我能够读取/压缩对象,并将新的拼花文件添加到现有的拼花文件中,当我对拼花数据运行查询时,它显示所有数据都在拼花文件夹中。但是,当我在EMR集群上的步骤中

    • 则错误如下: AttributeError:“property”对象没有属性“parquet”

    • 我正在尝试使用Kafka-connect来消耗Kafka的消息并将它们写入s3拼花文件。所以我写了一个简单的生产者,它用byte[]生成消息 我的Kafka连接配置是: 这是我得到的错误: 原因:java。lang.IllegalArgumentException:Avro架构必须是记录。在org。阿帕奇。拼花地板阿夫罗。AvroSchemaConverter。转换(AvroSchemaConve

    • 我们需要每天将文本数据转换为拼花地板/avro,如果输入来自多个具有不同结构的源,我们希望使用基于spark sql的scala代码来实现这一点,而不考虑分隔符和列数或结构。