当从Hive中读取Spark中的表的10亿条记录时,此表将日期和国家/地区列作为分区 . 它运行了很长时间,因为我们正在进行很多转换 . 如果我将Hive表文件格式更改为Parquet,那么它会有任何性能吗?有关改善表现的任何建议 .
将Orc更改为Parquet可能无法改善性能 .
但这取决于您拥有的数据类型 . 如果您正在使用嵌套对象,则需要使用Parquet,Orc并不适合 .
但是为了创造一些改进,我建议你做一些可以帮助你在Hive中获取数据的步骤 .
在Hive Query中可能产生大问题的一个常见问题是每个分区中的文件数量以及这些文件的大小 . 如果您使用Spark来存储数据,我建议您检查文件的大小以及它们是否与Hadoop块的大小一起存储 . 如果没有,请尝试使用命令 CONCATENATE 来解决该问题 . 如你所见here .
CONCATENATE
这就是Hive和Orc文件可以为您提供查询数据的最佳性能 . 我建议您运行一个 ANALYSE 命令来强制创建表的统计信息,这将提高性能,如果数据效率不高,这将有所帮助 . 检查here并使用它将更新Hive Metastore,并为您提供一些相关的数据信息 .
ANALYSE
如果可能,请尝试存储按某些列排序的数据,并过滤并执行该列中的其他内容 . 您的加入可以通过此进行改进 .
1 回答
将Orc更改为Parquet可能无法改善性能 .
但这取决于您拥有的数据类型 . 如果您正在使用嵌套对象,则需要使用Parquet,Orc并不适合 .
但是为了创造一些改进,我建议你做一些可以帮助你在Hive中获取数据的步骤 .
检查Hive中的文件数 .
在Hive Query中可能产生大问题的一个常见问题是每个分区中的文件数量以及这些文件的大小 . 如果您使用Spark来存储数据,我建议您检查文件的大小以及它们是否与Hadoop块的大小一起存储 . 如果没有,请尝试使用命令
CONCATENATE
来解决该问题 . 如你所见here .Predicate PushDown
这就是Hive和Orc文件可以为您提供查询数据的最佳性能 . 我建议您运行一个
ANALYSE
命令来强制创建表的统计信息,这将提高性能,如果数据效率不高,这将有所帮助 . 检查here并使用它将更新Hive Metastore,并为您提供一些相关的数据信息 .有序数据
如果可能,请尝试存储按某些列排序的数据,并过滤并执行该列中的其他内容 . 您的加入可以通过此进行改进 .