spark是从配置单元中选择还是从文件中选择更好

vktxenjb  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(442)

我只是想知道人们对从hive读取与从.csv文件或.txt文件或.orc文件或.parquet文件读取有什么看法。假设基础配置单元表是一个具有相同文件格式的外部表,您是从配置单元表还是从基础文件本身读取,为什么?
迈克

kkih6yb8

kkih6yb81#

热释光;医生:我会直接从Parquet文件里读出来
我将spark 1.5.2和Hive1.2.1用于一个500万行x100列的表,我记录的一些计时是

val dffile = sqlContext.read.parquet("/path/to/parquets/*.parquet")
val dfhive = sqlContext.table("db.table")

数据文件计数-->0.38s;数据单元计数-->8.99秒
dffile sum(col)-->0.98s;数据单元和(列)-->8.10s
dffile子串(col)-->2.63s;数据单元子串(列)-->7.77s
dffile其中(col=value)-->82.59s;数据单元,其中(列=值)-->157.64s
请注意,这些都是用一个旧版本的hive和一个旧版本的spark完成的,所以我不能评论两个读取机制之间的速度改进是如何发生的

7fhtutme

7fhtutme2#

据我所知,尽管一般来说 .ORC 更适合平面结构和 parquet 对于嵌套的, spark 被优化为 parquet . 因此,建议将该格式与 spark .
此外, Metadata 所有的阅读表格 parquet 将存储在 hive 不管怎样。我是spark医生: Spark SQL caches Parquet metadata for better performance. When Hive metastore Parquet table conversion is enabled, metadata of those converted tables are also cached. If these tables are updated by Hive or other external tools, you need to refresh them manually to ensure consistent metadata. 我倾向于尽快将数据转换成 parquet 格式化并存储 alluxio 支持 hdfs . 这使我能够为实现更好的性能 read/write 操作和限制使用 cache .
希望对你有帮助。

相关问题