Hive 的collect_set使用详解 https://blog.csdn.net/liyantianmin/article/details/48262109 对于非group by字段,可以用Hive的collect_set函数收集这些字段,返回一个数组: 使用数字下标,可以直接访问数组中的元素: select a,collect_set(b) as bb from t where b<='xxxxxx' group by a 会按照a分组 通过collect_set会把每个a所对应的
今天帮同事测试,发现代码里有个好用的hive 函数: 1. collect_set 可以输出未包含在groupby里的字段.条件是,这个字段值对应于主键是唯一的. select a, collect_set(b)[0], count(*) -- 同时想输出每个主键对应的b字段 from ( select 'a' a, 'b' b from test.dual )a group by a; -- 根据a group by 2. concat_ws 和collect_set 一起可以把group b
cast 函数: 类型转换函数,cast(kbcount as int); case when: 条件判断,case when kbcount is not null and cast(kbcount as int) >= cast(patch_count as int) then '1' else '0' end as isinstalled ; 语法:方法1 ( case sex when '1' then '男' when '2' then '女' else '未知' end ) as 性
因为,我的mysql是用root用户,在/home/hadoop/app/目录下,创建的. 第一步:开启mysql服务 第二步:启动hive [hadoop@weekend110 app]$ su rootPassword: [root@weekend110 app]# service mysqld startStarting mysqld: [ OK ][root@weekend110 app]# su hadoop[hadoop@weekend110 app]$ cd hive-0.12.0
主要限制三种情况 (1) 有partition的表查询需要加上where子句,筛选部分数据实现分区裁剪,即不允许全表全分区扫描,防止数据过大 (2) order by 执行时只产生一个reduce,必须加上limit限制结果的条数,防止数据量过大造成1个reduce超负荷 (3) join时,如果只有一个reduce,则不支持笛卡尔积查询.也就是说必须要有on语句的关联条件,做自然连接. group by和order by 同时使用,不会按组进行排序 where,group by,having,
--TextFile set hive.exec.compress.output=true; set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; INSERT OVERWRITE table hzr