关于Hive的练习
来源:互联网 发布:商品标题搜索优化 编辑:程序博客网 时间:2024/05/01 21:38
开始之前,先了解几个命令:
在Hive CLI中,可以使用如下一些命令
显示当前会话有多少函数可用
show functions;
显示函数的描述信息
desc function concat;
显示函数的扩展描述信息
desc function extended concat;
现在来练习下Hive中的一些常用内置函数
先来查看下表winfunc:
hive (default)> desc winfunc;OKcol_namedata_typecommentid int money float type string Time taken: 0.132 seconds, Fetched: 3 row(s)hive (default)> select * from winfunc;OKwinfunc.idwinfunc.moneywinfunc.type1001100.0ABC1001150.0BCD1001200.0CDE1001150.0DEF1002200.0ABC1002200.0ABC1002100.0BCD1002300.0CDE100250.0DEF1002400.0EFG1003100.0ABC100350.0BCD100460.0ABCTime taken: 1.177 seconds, Fetched: 13 row(s)
1. and和or的优先级
现在想要求下id为1001、1002的两个人工资为100.0时候的记录
hive (default)> select id,money,type from winfunc where id=1001 or id=1002 and money=100.0;OKidmoneytype1001100.0ABC1001150.0BCD1001200.0CDE1001150.0DEF1002100.0BCDTime taken: 0.13 seconds, Fetched: 5 row(s)
发现结果并不是我们想要的,为什么呢?其实是因为or和and优先级不一样导致的,因为and的优先级比or高,所以出现了上面的结果,如果要得到我们想要的结果,该怎么处理呢?
hive (default)> select id,money,type from winfunc where (id=1001 or id=1002) and money=100.0;OKidmoneytype1001100.0ABC1002100.0BCDTime taken: 0.147 seconds, Fetched: 2 row(s)
2. cast类型转换
如果想要将上面结果中的money类型转换成int类型,该如何实现呢?
hive (default)> select id,cast(money as int),type from winfunc where (id=1001 or id=1002) and money =100.0;OKidmoneytype1001100ABC1002100BCDTime taken: 2.489 seconds, Fetched: 2 row(s)
3. case...when
hive (default)> select case > when id='1001' then 'tom' > when id='1002' then 'kitty' > when id='1003' then 'jerry' > else 'others' > end > from winfunc group by id;
OK_c0tomkittyjerryothersTime taken: 1.505 seconds, Fetched: 4 row(s)
4. parse_url
语法:parse_url(string urlString, string partToExtract [, string keyToExtract])。
返回值:string
返回 URL 中指定的部分。 partToExtract 的有效值为: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.
hive (default)> select > parse_url('http://master:50070/explorer.html#/hive','HOST') > from winfunc limit 1;OK_c0masterTime taken: 0.102 seconds, Fetched: 1 row(s)
5. concat
语法: concat(string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果,支持任意个输入字符串
hive (default)> select concat(type,'123') > from winfunc limit 3;OK_c0ABC123BCD123CDE123Time taken: 0.103 seconds, Fetched: 3 row(s)
6. concat_ws
语法: concat_ws(string SEP, string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果, SEP 表示各个字符串间的分隔符
hive (default)> select concat_ws('_',type,'123') > from winfunc limit 3;OK_c0ABC_123BCD_123CDE_123Time taken: 0.99 seconds, Fetched: 3 row(s)
此外,concat_ws也可以处理数组,例如:
hive (default)> select concat_ws('_',split(type,'')) > from winfunc limit 1;OK_c0_A_B_C_Time taken: 0.125 seconds, Fetched: 1 row(s)
先将winfunc表中的第一行的type列的值通过split函数来切分成一个数组,然后通过concat_ws来将该数组中的没两个元素之间加上“_”。
7. collect_set
collect_set(x) - Returns a set of objects with duplicate elements eliminated
hive (default)> select collect_set(id) > from winfunc;
OK_c0[1001,1002,1003,1004]Time taken: 1.546 seconds, Fetched: 1 row(s)
8. collect_list
collect_list(x) - Returns a list of objects with duplicates
Time taken: 1.546 seconds, Fetched: 1 row(s)hive (default)> select collect_list(id) > from winfunc;
OK_c0[1001,1001,1001,1001,1002,1002,1002,1002,1002,1002,1003,1003,1004]Time taken: 2.894 seconds, Fetched: 1 row(s)
也就是说collect_set会去重,而collect_list不会去重。
- 关于Hive的练习
- 关于hive的总结
- hive练习
- [Hive]关于Hive的启动问题
- (大数据之hive)hive的自定义函数练习
- 关于hive的服务模式
- 关于SQL的练习
- 关于单链表的练习
- 关于类的练习
- 关于浮动的练习
- 关于输出的练习
- 关于用户的练习
- 关于LVM的练习
- hive练习数据
- Hive安装配置+练习
- Hive SQL 练习
- Hive HQL练习
- 关于JDBC用法的练习
- CSS书写规范
- iOS 程序打包ipa流程以及打包之后无法在真机上进行调试
- 不可变对象和类,变量的作用域
- A1102. Invert a Binary Tree (25)
- ppython None Null区别
- 关于Hive的练习
- Amazon 亚马逊增加 Gamecircle注意事项
- 设置加载失败,正在加载,界面。
- 问与答——人物传记推荐
- 常见排序算法的Java实现代码汇总
- Android-Preproty animation解析
- Android项目实战--【谁是歌手-逻辑实现篇】
- 拥有大量相同结构Activity的项目精简经验—— ReUsableActivity
- ConcurrentHashMap原理分析