行排序时优化 Hive GROUP BY

2024-02-25

我有以下(非常简单)Hive 查询:

select user_id, event_id, min(time) as start, max(time) as end,
       count(*) as total, count(interaction == 1) as clicks
from events_all
group by user_id, event_id;

该表具有以下结构:

user_id                 event_id                time            interaction 
Ex833Lli36nxTvGTA1Dv    juCUv6EnkVundBHSBzQevw  1430481530295   0
Ex833Lli36nxTvGTA1Dv    juCUv6EnkVundBHSBzQevw  1430481530295   1
n0w4uQhOuXymj5jLaCMQ    G+Oj6J9Q1nI1tuosq2ZM/g  1430512179696   0
n0w4uQhOuXymj5jLaCMQ    G+Oj6J9Q1nI1tuosq2ZM/g  1430512217124   0
n0w4uQhOuXymj5jLaCMQ    mqf38Xd6CAQtuvuKc5NlWQ  1430512179696   1

我知道一个事实是行首先排序user_id然后通过event_id.

问题是:有没有办法“提示”Hive 引擎在行已排序的情况下优化查询?优化的目的是避免将所有组保留在内存中,因为一次只需要保留一组。

目前,此查询在 6 节点 16 GB Hadoop 集群中运行,数据大约为 300 GB,大约需要 30 分钟,并且使用了大部分 RAM,导致系统阻塞。我知道每个组都会很小,每个组不超过 100 行(user_id, event_id)tuple,所以我认为优化的执行可能会占用非常小的内存,而且速度也会更快(因为不需要循环组键)。


创建一个分桶排序表。优化器会知道它是根据元数据排序的。 请参阅此处的示例(官方文档):https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-BucketedSortedTables https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-BucketedSortedTables

仅计算交互 = 1:count(case when interaction=1 then 1 end) as clicks- case 会将所有行标记为 1 或 null,并且仅计算 1。

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

行排序时优化 Hive GROUP BY 的相关文章

  • 将文件保存为 MYSQL 数据库中的 blob 或文件路径

    我知道这些问题是常见问题之一 但我需要您针对具体案例提供帮助 我正在开发一个应用程序 其中一些用户可以添加订单 一些用户可以执行这些订单 这些订单非常具体 因此只有有限数量的用户可以添加它们 然后 为每个订单生成三个文档 每个文档的大小不超
  • 带有输出文件和屏幕输出的 sqlcmd

    我使用 sqlcmd 执行一些命令行批处理 bat 如下所示 sqlcmd i Scripts STEP01 sql o PROCESS log S MYSERVER E d MYDATABASE 我需要一个输出文件 当前有效 以及通过屏幕
  • Couchbase/hadoop 连接器:sqoop 作业失败“找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但需要类”

    我的配置 CouchBase服务器2 0 Sqoop 1 4 2 针对hadoop版本2 0 0编译 堆栈Hadoop CDH4 1 2 我想使用 CouchBase Hadoop 连接器 http www couchbase com de
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • 将 List 保存到 ASP.NET 中的会话

    购物车项目保存在 SQL 数据库中 我想将所有 CartItems 放在一个 List 中并转移到 Instance Items The Instance变量正在保存到会话中 代码如下 public class ShoppingCart p
  • 如何从其他表填充表的外键

    我有以下表格 其中translation是空的 我正在尝试填充 translation id translated language id template id language id langname langcode template
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • 什么时候空值在列中“安全”?

    设计数据库时是否存在允许列为空与 3nf 规范化的一般经验法则 我有一个表 其中的列主要由空值 85 组成 但表大小不超过 10K 记录 不是很大 它主要用于日志记录和记录保存 因此大多数事务将是插入和选择 而不是更新 我试图同时考虑性能和
  • SQL 查询:按 ntext 字段分组

    我有以下查询 它基本上检索销量最高的 5 本书 select top 5 count id book orddetails books sold bk from orderdetails orddetails ord inner join
  • 在 SQL 表中的文本字符串中查找换行符?

    我试图在 SQL 表的列中查找换行符和回车符 但我不确定语法 I tried SELECT foo FROM test WHERE foo LIKE CHAR 10 尽管我知道该表应该返回结果 但我没有得到任何结果 我究竟做错了什么 SEL
  • MySQL SUM 具有相同的 ID

    抱歉 这个真正简单的问题 我刚刚学习 PHP 和 MySQL 我已经在谷歌上搜索了一个多星期 但没有找到任何答案 我创建了一个简单的财务脚本 表格如下 table a aid value 1 100 2 50 3 150 table b b
  • 在sql server中透视固定的多列表

    我有一个需要为报告服务进行旋转的表格 DateCreated Rands Units Average Price Success Unique Users 2013 08 26 0 0 0 0 0 2013 08 27 0 0 0 0 0
  • hadoop2.2.0追加文件发生AlreadyBeingCreatedException

    我遇到了一个关于hadoop2 2 0追加操作的问题 我通过 HDFS java API 将一些字节附加到 hdfs 文件 首先 如果在附加操作之前文件不存在 我将创建目标文件 代码如下 String fileUri hdfs hadoop
  • WebMatrix sql LIKE %

    我在执行以下查询时遇到问题 当我使用静态参数直接从 WebMatrix 执行它并返回几行时 它可以工作 但不能从我的 cshtml 页面执行 var accounts database Query SELECT Username Email
  • SSIS ODBC SQL 参数

    我在 odbc 源数据流任务中有一个 SQL 命令需要采用参数 但不存在添加参数的选项 我尝试将数据库添加为与 ODBC 提供程序的 ADO NET 连接 但也没有可用的参数 还尝试将其作为 OLEDB 连接 但没有可用于 ODBC 的提供
  • 从另一列计算出的列?

    给出下表 id value 1 6 2 70 有没有办法添加根据同一个表中的另一列自动计算的列 与 VIEW 类似 但属于同一个表的一部分 举个例子 calculated将是一半value Calculated应该会自动更新value变化
  • LINQ Group By 投影成非匿名类型?

    我有以下 LINQ 示例 var colorDistribution from product in ctx Products group product by product Color into productColors select
  • 数据源和数据集的区别

    我目前正在开发一个项目 其主要任务是读取存储在 SQL 数据库中的数据并以用户友好的形式显示它们 使用的编程语言是C 我在 Borland C Builder 6 环境中工作 但我认为标题中提出的问题与编程语言或库无关 当从数据库读取数据时
  • 当从搜索表单动态构建 WHERE 子句时,如何防止 SQL 注入?

    我知道在 Java 中保护 SQL 查询免受 SQL 注入的唯一真正正确的方法是使用准备好的语句 然而 这样的语句要求基本结构 选择的属性 连接的表 WHERE条件的结构 不会改变 我这里有一个 JSP 应用程序 其中包含一个带有大约十几个
  • Postgres 在转换时函数错误/失败时返回空值

    我正在尝试转换text价值观timestamp价值观 对于下表称为a id c1 1 03 03 2000 2 01 01 2000 3 12 4 1990 4 12 Sept 2011 5 12 1 1999 12 33 12 6 24

随机推荐

  • 如何以编程方式打开“网络连接”窗口

    如何在Win7 XP中使用C 以编程方式打开 网络连接 窗口 使用 shell 执行启动一个新进程 然后运行 NCPA cpl 就像这样 ProcessStartInfo startInfo new ProcessStartInfo NCP
  • 查找 SAP 表 (gridview) 中某个范围的每个单元格值

    我正在尝试从 Excel 文件到 SAP 表中查找特定文本 我尝试了下面的代码 但它给了我错误 无效的下一个控制变量引用 到目前为止 下面是我的代码 set rLastRow rSheet Cells rSheet rows Count A
  • Lua中的“C like struct”用于长缓冲区操作?

    为了 Lua 的简单性和美观性 我想用 Lua 而不是 C 来编写 映射 代码 假设在 C 语言中我可以有以下内容 typedef struct my struct char field 1 10 char field 2 250 char
  • 旧版本 Python 中字典中键的顺序

    Code d a 0 b 1 c 2 l d keys print l 这打印 a c b 我不确定该方法如何keys 确定其中关键字的顺序l 但是 我希望能够以 正确 的顺序检索关键字 正确的顺序当然会创建列表 a b c Python
  • 如何判断 jsTree 是否已完全加载?

    我正在尝试编写一个在 jsTree 上打开特定节点的函数 但遇到一个问题 即在从 ajax 调用加载我的基础树之前执行该函数 我如何判断我的 jstree 数据是否已加载并等待加载完成 以下是我尝试使用的功能 function openNo
  • Obj-C、Storekit RestoreCompletedTransactions 返回零事务?

    我在恢复已完成的交易时遇到一些问题 SKPaymentQueue defaultQueue restoreCompletedTransactions 我添加了几个示例中提到的观察者 我尝试添加paymentQueueRestoreCompl
  • ASP Core Azure Active Directory 登录使用角色

    我创建了一个 Azure Active Directory 应用程序 我想使用基于角色的安全性 我按照以下教程进行操作 https azure microsoft com en us resources samples active dir
  • 动态创建的 DropDownList 没有触发事件。是的,自动回发设置为 TRUE

    下面是我的动态下拉列表的代码 它确实正确生成了 HTML 但是 该事件并未被触发 而且 当我将事件名称更改为 onchange 时 它会给我一个编译错误 指出它找不到脚本 它就在我的代码隐藏中 另外 我将其添加到 OnInit 页面事件中
  • Resharper:“属性‘VS100COMNTOOLS’未定义”

    我在 MSTest 项目的代码检查时发现了上述问题 该问题与 csproj 本身有关 这是什么意思 我需要做些什么吗 我知道 VS100COMNTOOLS 环境变量 所以我猜测 Resharper 期望该路径位于项目的运行时环境中 但由于某
  • 如何向 TextSpan 添加多个手势识别器?

    我想将 TapGestureRecognizer 和 LongPressGestureRecognizer 添加到TextSpan https api flutter dev flutter painting TextSpan class
  • Homestead 错误:SSH 命令以非零退出状态响应

    当我这样做时出现错误homestead up provision在我的宅基地机器上 success logs here gt default Running provisioner shell default Running var fol
  • 为什么不总是在一项活动中使用片段[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么有人会创建活动而不是一个包含许多片段的活动 我发现使用片段可以更轻松地共享数据 而且您可以更好地使用 onpause 来确定应用程序是否进
  • Android:在 Android 中为应用程序离线存储 JSON 数据的最佳方式是什么?

    我想实现一个应用程序 它将显示路线号码 骑手已经在谷歌地图上登机 因此 要查找路线编号 我需要一些有关路线的信息 这些信息在 JSON 文件中定义 JSON 文件中的信息将从应用程序中离线处理和解析 它也应该与应用程序一起安装和卸载 JSO
  • CodeIgniter - 表单验证和文件上传数据

    我想知道是否有一种方法可以使用 CodeIgniter 2 0 中的表单验证类来验证文件的大小 我有一个包含文件输入的表单 我想做这样的事情 this gt form validation gt set rule file File fil
  • bitbake SRC_URI 文件://

    如果我在本地目录中有一个 tarball helloworld tar gz 比如 home user tarballs 我怎样才能从该目录中获取我的 bitbake 配方 我的 helloworld bb 是 SECTION exampl
  • 更改本机基础上的占位符字体样式

    我使用本机基地输入组件 https docs nativebase io Components html Form 我尝试像下面的示例一样自定义占位符字体样式 但它不会更改占位符 它改变了用户键入的输入值的样式 如何更改占位符字体样式
  • cli 的 ember.js 中的固定装置数据在哪里

    我正在尝试在使用 cli 生成的 ember 应用程序中使用固定装置数据 我找不到我的数据 检查员显示我有一个名为 post 的模型 但其中没有任何内容 我不确定为什么它不起作用 所以发布我认为相关的文件 模型 post js var Po
  • 由foldRight过滤的HList不提供实例

    我在用着libraryDependencies com chuusai shapeless 2 2 4 目前我有模型 HList 类型 例如 sealed trait Section case class Header extends Se
  • Adobe Air / Flex 的最佳 ORM

    我不确定我在这里缺少什么 但我找不到可靠的 AIR ORM 我发现的那些没有很好的记录 而且似乎没有坚实的追随者 现在还不存在可靠的 ORM 吗 我所知道的 http flexorm riaforge org http flexorm ri
  • 行排序时优化 Hive GROUP BY

    我有以下 非常简单 Hive 查询 select user id event id min time as start max time as end count as total count interaction 1 as clicks