0450-如何在Hue中调优Impala和Hive查询

本文档介绍了如何在Hue中解决Hive和Impala查询后资源未释放的问题。通过配置Impala的查询超时时间和HiveServer2的会话超时,实现了资源的有效释放,以达到调优目的。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢

1

文档编写目的

Hue中使用Hive和Impala进行查询,在使用完Hue后退出登录,会出现Hive和Impala的暂用的资源未释放。本篇文章Fayson主要针对该问题在Hue中调优Impala和Hive查询,该调优方式适用于CDH5.2及以后版本。

  • 内容概述

1.场景描述及测试用户准备

2.Impala资源池和放置规则配置

3.放置规则验证及总结

  • 测试环境

1.CM和CDH版本为5.15

2

Hue中调优Impala

Hue会尝试在用户离开查询结果返回界面时关闭查询(通常查询会比较快完成,因此可以快速的关闭它们)。但是,如果用户执行的操作从未返回。或者,如果用户从未关闭查询页面,则查询任然保存打开状态。在CDH5.2中,Impala将自动使用“query_timeout_s”属性指定会话超时时间(默认为10分钟),在超时后自动取消查询,可以通过如下方式设置该参数。

1.使用管理员登录CM,进入Hue服务的配置界面

2.在搜索栏输入“hue*.ini”,在配置项中配置如下信息

[impala]
query_timeout_s=600

(可左右滑动)

配置查询超时时间,单位为s,完成以上配置后根据CM提示重启相应服务即可。在此之前的版本,关闭所有查询的唯一解决方法则是重启Hue或Impala服务。

注意:Impala目前只能取消查询但不能关闭查询。他将在Impala 1575的版本中得到改进。JIRA地址如下:http://issues.cloudera.org/browse/IMPALA-1575

<
<think>嗯,我需要仔细梳理用户的问题。用户的核心需求分为两部分:一是理解ImpalaHive、Solr、SQLHue的功能及相互关系;二是解决数据导入时取消勾选“引号内识别分隔符”“数据类型检测”的设置方法。先看组件关系部分。用户提到的五个工具都属于Hadoop生态系统,但定位同:-SQL是通用查询语言,HiveImpala都支持SQL语法-Hive是面向批处理的数据仓库,适合大规模ETL-Impala专注于交互式SQL查询,低延迟是其-Solr提供全文搜索能力,常与Hive/Impala的数据集结合使用-Hue则是统一的WebUI操作界面关于导入设置问题,用户引用了之前讨论Excel处理的内容,但实际场景可能转到大数据平台。我注意到用户引用中涉及Sqoop(HDFS数据同步)、Hive外部表定义(包括存储格式分隔符控制),以及Impala的操作文档。这说明用户可能在处理:1.从关系数据库向Hive导入数据时保留特殊字符2.避免Hive/Impala自动推断数据类型导致的数据异常具体到技术方案,取消“引号内识别分隔符”对应Hive的serialization.norl配置,禁用类型检测则需在Sqoop中用--map-column-java参数。考虑到用户引用中提到文本文件(TextFile)存储格式,还要注意LOADDATA操作时的转义规则。特别需要注意的是,用户提供的引用[3]展示了Hive外部表如何通过ROWFORMAT子句精确控制分隔符,这正好匹配“取消引号识别分隔符”的需求——指定COLLECTIONITEMSTERMINATEDBY','时,逗号在集合内被误识别为字段分隔符。</think> ### ImpalaHive、Solr、SQL与Hue的功能及关系 | 组件 | 功能 | 与其他组件的关系 | |-----------|----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------| | **SQL** | 结构化查询语言,用于数据操作分析 | Hive/Impala使用类SQL语法(HiveQL/Impala SQL),Hue提供SQL编辑界面 | | **Hive** | 数据仓库工具,将SQL转为MapReduce/Tez任务,**适合批处理** | 元数据存于Metastore;Impala共享其元数据;Hue集成Hive编辑器;Solr可索引Hive表 | | **Impala**| 内存计算引擎,**低延迟SQL查询**(无需转MapReduce) | 直接读取HDFS/HBase数据;共享Hive元数据;Hue提供查询界面;性能Hive及Solr实时搜索 | | **Solr** | 全文搜索引擎,支持高并发实时查询 | 可索引Hive表数据;Hue集成Solr界面;Impala适合文本搜索场景 | | **Hue** | 可视化Web UI,**统一操作入口** | 集成Hive/Impala/Solr的编辑器;提供SQL查询、数据浏览、工作流度等功能 | ### 取消勾选"引号内识别分隔符""数据类型检测"的方法 > **核心原理**:禁用智能解析以避免数据被篡改(如双引号丢失或科学计数法转换) #### 1. Hive数据导入设置(参考引用[2][3]) ```sql -- 建表时指定原始格式(取消引号识别) CREATE TABLE raw_data ( col1 STRING, -- 显式定义STRING类型避免类型推断 col2 STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = ",", -- 分隔符 "quoteChar" = "\"", -- 保留引号字符 "escapeChar" = "\\", -- 转义符 "serialization.norl" = "true" -- 取消引号内分隔符识别❗(关键参数) ) STORED AS TEXTFILE; -- 原始文本格式(禁用压缩) ``` - **效果**:字段`"USD,123"`导入后保持原样,会被拆分为两列 - **禁用类型检测**:所有列显式声明为`STRING`(避免数值转科学计数法)[^2] #### 2. Sqoop导入到Hive(参考引用[1]) ```bash sqoop import \ --hive-import \ --fields-terminated-by ',' \ --escaped-by '\\' \ # 指定转义符 --enclosed-by '\"' \ # 保留引号 --map-column-hive col1=STRING,col2=STRING \ # 强制指定类型❗ --input-null-string '\\N' # 关闭空值自动转换 ``` #### 3. Hue界面操作指南 1. **数据导入时**: - 在`Data Browser` > `Import Data`界面 - **取消勾选** `Detect delimiters within quoted fields`(引号内识别分隔符)[^3] - **字段类型**:手动选择全部列类型为`Text` <img src="hue_import_setting.png" width="400" alt="Hue取消引号识别选项"> 2. **查询时临时禁用解析**: ```sql SET hive.serialization.norl=true; -- Impala/Hive会话级生效 ``` ### 关键技术对比 | 场景 | 解决方案 | 势 | |---------------------|------------------------------|----------------------------------------------| | 保留带逗号的引号字段 | `serialization.norl=true` | 避免`"A,B"`被拆分为两列 | | 防止数值转科学计数法 | 显式定义列类型为`STRING` | 保证`123456789012`被转为`1.23457E+11`[^2] | | 兼容特殊字符 | 指定`escaped-by``enclosed-by` | 正确处理`\"USD\"`等转义字符 | > **重要提示**:Hive/Impala默认启用引号内分隔符识别(`serialization.norl=false`),需根据业务数据特性选择是否关闭[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值