Hive 分区表上的 Spark 行为

2024-04-15

我用的是 Spark 2。

实际上我不是执行查询的人,所以我不能包含查询计划。数据科学团队问过我这个问题。

我们将 Hive 表划分为 2000 个分区并以 parquet 格式存储。当在 Spark 中使用相应的表时,执行器之间恰好执行了 2000 个任务。但我们的块大小为 256 MB,并且我们预计分区数量(总大小/256)肯定会远小于 2000。 Spark使用数据的物理结构来创建分区是否有任何内部逻辑?任何参考/帮助将不胜感激。

更新:事实恰恰相反。实际上我们的表非常大,有 3 TB,有 2000 个分区。 3TB/256MB 实际上会达到 11720,但我们的分区数量与表的物理分区数量完全相同。我只是想了解任务是如何在数据量上生成的。


一般来说,Hive 分区不会 1:1 映射到 Spark 分区。 1个Hive分区可以拆分为多个Spark分区,一个Spark分区可以容纳多个Hive分区。

加载 hive-table 时 Spark 分区的数量取决于以下参数:

spark.files.maxPartitionBytes (default 128MB)
spark.files.openCostInBytes (default 4MB)

您可以检查分区,例如使用

spark.table(yourtable).rdd.partitions

这会给你一个数组FilePartitions其中包含文件的物理路径。

为什么你从 2000 个 Hive 分区中得到了 2000 个 Spark 分区,这对我来说似乎是巧合,根据我的经验,这种情况不太可能发生。请注意,spark 1.6 中的情况有所不同,spark 分区的数量类似于文件系统上的文件数量(1 个 Spark 分区对应 1 个文件,除非文件非常大)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 分区表上的 Spark 行为 的相关文章

随机推荐

  • 在锚链接中添加工具提示[重复]

    这个问题已经存在了 我想在文本中添加工具提示 例如 如果我有这样的代码 a href http google com title Google a 鼠标悬停时 我想显示该工具提示 使用title这是一个好方法 但是我怎样才能让它看起来更好呢
  • Excel 2010:通过外部连接替换表格而不影响其他工作表

    我有一本包含大量数据的大工作簿 在一张纸上我有一张桌子 该表用于其他工作表中使用的许多数据透视表 这些数据透视表也用于其他工作表中 该表的数据是定期手动复制的 我现在有一个外部连接可以自动导入数据 但我想避免影响其他工作表 如何使用外部连接
  • 在 ruby​​ on Rails 4 中上传图像或文件

    在这里 我想要一个关于在不使用任何 gemfile 例如 peperclip carrierwave 等 的情况下上传文件或图像的清晰概念 之前 我做了一些工作 我可以在 assets images 文件夹中上传图像 但是当我在显示页面中调
  • 转置逗号分隔字段

    我有一个如下所示的数据集 并且正在使用 SAS Enterprise Guide 6 3 data have input id state cards 134 NC NY SC 145 AL NC NY SC run 我有另一个数据集 其中
  • 像 MySQL 一样从 Firebase 检索计数数据

    当尝试从 MySQL 数据库中提取数据时 我可以执行以下操作 SELECT FROM users ORDER BY id WHERE vehicle car 例如 这应该让我获得所有驾驶汽车的用户 而不是显示驾驶摩托车的用户 Firebas
  • 表单:避免将非提交字段设置为 null

    我有一个简单的模型 源简化 class Collection public page public limit 以及表单类型 class CollectionType extends AbstractType public function
  • 调用类指针上的方法[重复]

    这个问题在这里已经有答案了 并不是说我有问题 而是我发现以下事实很奇怪 Class Shape class Shape protected int width height public Shape int a 0 int b 0 widt
  • C# Begin/EndReceive - 如何读取大数据?

    当以 1024 字节为单位读取数据时 如何继续从接收大于 1024 字节的消息的套接字读取数据 直到没有剩余数据为止 我是否应该仅使用 BeginReceive 来读取数据包的长度前缀 然后在检索到该前缀后 使用 Receive 在异步线程
  • RxJS v5 中的速率限制和计数限制事件,但也允许传递

    我有很多事件要发送到服务 但请求有速率限制 每个请求都有计数限制 每秒 1 个请求 bufferTime 1000 每个请求 100 个活动项目 bufferCount 100 问题是 我不确定如何以有意义的方式将它们组合起来 允许通过 让
  • 在 wine (linux) 下运行的 Windows 应用程序的屏幕截图

    正如标题所说 我想截取wine下运行的窗口应用程序的屏幕截图 不是整个桌面 C 是首选 但也可以使用 java 或 Pascal 提前致谢 使用 imagemagick 的导入命令抓取窗口并将其转储到文件中 进口文件 http www im
  • 远程过程调用认证

    我正在使用远程过程调用 RPC 在本地计算机上通信数据 我的要求是使用 RPC 在两个处理之间通信数据 但服务器应该通过某种方式对客户端进行身份验证 我遇到了 RpcBindingSetAuthInfo 它设置身份验证和授权信息 第四个参数
  • 如何获取类属性的名称?

    无论如何我可以获得类属性的名称IntProperty public class ClassName public static int IntProperty get return 0 something like below but I
  • 在Python中按多个值对列表列表进行排序

    我需要对列表列表进行排序 其中每个列表entry外部列表是一个由三个整数组成的列表 如下所示 3 1 0 1 2 3 3 2 0 3 1 1 诀窍是我需要对其进行排序entry 0 如果有平局 则按以下顺序对它们进行排序entry 1 如果
  • OSX - 始终隐藏某些文件

    我知道如何在终端中显示和隐藏隐藏文件 但是有没有办法在显示隐藏文件时隐藏某些文件 例如 DS STORE 可以这么说 使某些文件超级隐藏吗 Use chflags与隐藏选项 ie chflags hidden fileToHide从 Fin
  • XMI 2.1.1 的 XSD

    我必须使用 JAXB 解析 XMI 文件 xmi 版本 2 1 1 为此 我必须生成与 XMI 文件相对应的 Java 类 因此 我需要 xmi 文件的 shema 定义才能使用 jxc 工具执行此操作 我希望有人知道在哪里可以找到这个文件
  • `AVCaptureVideoDataOutput` 消耗的内存是 `AVCaptureMovieFileOutput` 的三倍

    Issue 我正在使用 AVFoundation 来实现一个相机 它能够在运行特殊的人工智能处理时录制视频 拥有一个AVCaptureMovieFileOutput 用于视频录制 and a AVCaptureVideoDataOutput
  • 当由不同模块导入时,如何访问 Python 2.7 中的相对路径

    目标 使用从各种 python 模块调用的通用实用程序函数时访问 写入相同的临时文件 背景 我正在使用 python Unittest 模块来运行一组自定义测试 这些测试通过 pySerial 与仪器接口 因为我使用的是unittest模块
  • AudioConverterNew 返回 -50

    我有一个关于使用 AudioQueue 服务的小问题 我已按照 Apple 网站上提供的指南进行操作 但是当我启动并运行音频队列时 我收到消息告诉我 AudioConverterNew 返回 50 现在 我知道 50 错误代码意味着存在错误
  • node.js可以导入java库吗

    我有一个 Nodejs 应用程序 它有一些昂贵的计算 我正在考虑用 java 来完成这部分 这样我就可以更轻松地利用线程和数学库 有没有一种简单的方法可以让nodejs与外部java库对话 java 库将包含一个频繁调用 javascrip
  • Hive 分区表上的 Spark 行为

    我用的是 Spark 2 实际上我不是执行查询的人 所以我不能包含查询计划 数据科学团队问过我这个问题 我们将 Hive 表划分为 2000 个分区并以 parquet 格式存储 当在 Spark 中使用相应的表时 执行器之间恰好执行了 2