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

Spark性能问题vs Hive

高夜洛
2023-03-14

我正在开发一条每天都会运行的管道。它包括连接两个表,比如x

以下是关于环境的事实,

对于表x:

  • 数据大小:18 MB
  • 分区中的文件数:~191
  • 文件类型:拼花地板

对于表y:

    < li >数据大小:1.5 GB < li >一个分区中的文件数:~3200 < li >文件类型:拼花地板

现在的问题是:

我尝试了不同的资源组合的火花工作。

例如。:

  • 执行者:50内存:20GB内核:5
  • 执行者:70内存:20GB内核:5
  • html" target="_blank">执行者:1内存:20GB内核:5

所有三个组合都提供了相同的性能。我不确定我在这里错过了什么。

我还尝试广播小表“x”,以避免在连接时出现随机播放,但性能没有太大提高。

一个关键的观察结果是:

70%的执行时间用于读取大表“y”,我想这是由于每个分区有更多的文件。

我不知道hive是如何给出同样的性能的。

恳请建议。

共有1个答案

暴招
2023-03-14

我想你是在比较MR和Spark的Hive。如果不是这样,请告诉我。因为Hive(基于tez或spark)与spark Sql在性能方面不会有太大差异

我认为主要问题是小文件太多。I/O本身消耗了大量的CPU和时间,因此您无法体验Spark的处理能力。

我的建议是在读取镶木地板文件后立即合并火花数据帧。请将“x”数据帧合并到单个分区中,将“y”数据帧合并到6-7个分区中。

完成上述操作后,请执行join(broadcastHashJoin)。

 类似资料:
  • 我是Spark和Cassandra的新学员。我正面临着一个主要的性能问题,我在Spark中每5秒将来自Kafka的数据流化,然后使用JRI在R语言中对数据执行分析,最后将数据保存到Cassandra各自的列族中。将数据保存到Cassandra的持续时间(以毫秒为单位)随着输入请求的数量迅速增加[每个请求为200KB]。 火花代码:

  • 我有一个拼花地板数据表,结构如下: null null 我已经调整了以下设置,希望降低总时间: spark.memory.storagefraction 0.02 spark.sql.windowexec.buffer.in.memory.threshold 100000 spark.sql.constraintpropagation.enabled false 第二种方法帮助防止了日志中出现的一

  • 问题内容: 我在Java2D方面表现有些古怪。我知道sun.java2d.opengl VM参数可以为2D启用3D加速,但是即使使用该参数也有一些奇怪的问题。 这是我运行的测试结果: 在JComponent上绘制具有32x32像素图块的25x18地图, 图像1 = .bmp格式,图像2 = .png格式 没有-Dsun.java2d.opengl = true 使用.BMP图像1的120 FPS使

  • 最近,我们将数据库从11g更新为19c。 在新数据库版本中测试应用程序时,我们遇到了一个特定视图的性能问题,该视图工作得非常好,但在19c中会导致性能问题。 在分析计划时,我们看到执行计划发生了巨大变化,这导致了19c中视图的性能非常差。 令人惊讶的是,其他观点的效果很好。 如果你能对这个问题有所了解,那就太好了。 谢谢你,JD

  • 问题内容: 在处理多个千兆字节文件时,我注意到了一些奇怪的事情:似乎使用文件通道从文件读取到分配有allocateDirect的重复使用的ByteBuffer对象中,比从MappedByteBuffer中读取要慢得多,实际上,它甚至比读取字节中的记录还要慢。使用常规读取调用的数组! 我期望它(几乎)与从mapedbytebuffers读取的速度一样快,因为我的ByteBuffer是使用alloca

  • 问题内容: 我读到React非常快。最近,我写了一个应用程序来测试对角的反应。不幸的是,我发现反应的表现要慢于角度反应。 http://shojib.github.io/ngJS/#/speedtest/react/1 这是react的源代码。我是新来的人。我确定我的反应代码在这里做错了。我发现它异常缓慢。 https://jsbin.com/viviva/edit?js,输出 看看是否有任何反应