【踩坑记录】starrocks hive Length的用法

文章探讨了在公司两个查询平台中使用StarRocks的length()函数处理字符串长度时遇到的问题,发现中文字符在StarRocks中计算长度时被视为3个字符,与Spark返回结果不符,引发筛选条件不一致的现象。

在公司平台用starrocks hive 使用length()做筛选条件, 和使用spark 返回的结果一致,然而在公司另一个查询平台上却筛选不出结果,最终发现是starrocks hive 中length() 一个中文字符算3个字符长度

官方文档链接length | StarRocks

MySQL > select length("abc");
+---------------+
| length('abc') |
+---------------+
|             3 |
+---------------+

MySQL > select length("中国");
+------------------+
| length('中国')   |
+------------------+
|                6 |
+------------------+

### StarRocksHive 的特点 #### StarRocks 的特点 StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库,旨在简化并加速数据分析过程。用户可以利用其强大的功能来支持多种数据分析场景而无需复杂预处理[^1]。 - **高性能**:相较于传统解决方案如Presto,在某些情况下可达到三倍以上性能提升。 - **多场景适应性**:能够灵活应对不同类型的分析需求,包括但不限于实时数据处理、交互式查询以及大规模批处理作业。 - **易集成性**:不仅兼容现有生态系统中的工具和服务(例如Hive外表),还提供了良好的扩展性和灵活性以便于未来技术栈升级或变更[^2]。 ```sql SELECT * FROM hive_table WHERE date >= '2023-01-01'; ``` 此 SQL 语句展示了如何在 StarRocks 中访问来自 Hive 表的数据,体现了两者之间的良好互操作性。 #### Hive 的特点 作为最早期的大规模分布式计算框架之一,Apache Hive 主要用于结构化数据仓库管理,并允许开发者使用类似于SQL的语言来进行ETL(Extract, Transform, Load)流程定义和执行。 - **成熟度高**:拥有丰富的社区资源和技术积累,适合构建稳定可靠的企业级应用。 - **广泛采用**:由于其开放源码性质及其与 Hadoop 生态系统的紧密结合,已被众多企业采纳为标准组件。 - **延迟较高**:对于即时响应型的任务可能不是最佳选择,因为它的设计初衷更偏向于批量处理而非低延时请求服务[^3]。 --- ### 性能对比 | 特征 | StarRocks | Hive | |------| | 执行速度 | 显著优于大多数同类产品 | 较慢 | | 并发能力 | 高效支持大量并发读写 | 受限于MapReduce架构 | | 实时性 | 支持毫秒级别返回结果 | 更倾向于分钟级别的任务完成时间 | 上述表格总结了两种数据库系统之间主要区别所在之处;值得注意的是具体表现还会受到实际部署环境的影响。 --- ### 各自适用的数据处理场景 #### StarRocks 适用场景 当业务逻辑涉及到频繁更新的小文件集合或是需要快速获取最新状态变化的信息时,比如金融交易记录跟踪或者社交媒体动态推送等功能模块,则应优先考虑选用具备高效索引机制和支持细粒度分区特性的 StarRocks 来满足这些苛刻条件下的性能要求。 #### Hive 适用场景 而对于那些侧重长期保存海量历史资料并且对查询时效性不太敏感的应用领域而言——像电信运营商的日志归档中心或者是电商网站的商品销售趋势统计报告生成等场合下——则更适合依赖稳定性好且成本效益高的 Hive 架构进行开发实施。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值