




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HiveQL—数据操作创建数据集创建表:createtablewordcount(wordstring,freqint)rowformatdelimitedfieldsterminatedby'\t'storedastextfile;生成数据:在hdfs上创建input目录,将数据文件上传到input目录下,执行程序,生成wordcount数据hadoopjar$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jarwordcount/input/yarn*/output装入数据:loaddatainpath"/output/part-r-00000"intotablewordcount;HiveQL查询SELECTnameFROMsalesWHEREamount>8ANDregion="shanghai";SELECTcount(*)counter,regionFROMsalesGROUPBYregionHAVINGcounter>2;select*fromwordcountlimit10;select*fromwordcountwherefreq>10orderbyfreqdesclimit10;HiveQL查询数组列:selectname,subordinatesfromemployees;selectname,subordinates[0]fromemployees;map
selectname,deductions["grtaxes"]fromemployees;struct
selectname,address.cityfromemployees;使用列值进行计算selectsalary,deductions["grtaxes"],salary*(1-deductions["grtaxes"])fromemployees;嵌套select语句select,e.salary,e.salary_shfrom(selectname,salary,deductions["grtaxes"]asgr_taxes,round(salary*(1-deductions["grtaxes"]))assalary_shfromemployees)ewheree.salary_sh>2000;通过查询语句向表中插入数据insert允许用户通过查询语句向目标表中插入数据insertoverwrite[into]tablestock_tpartition(ymd='20170929')selectsymbol,price_open,price_high,price_low,price_close,volumefromstockswhereymd='20170929';通过查询语句向表中插入数据fromstocksinsertoverwritetablestock_tpartition(ymd='20170928')selectsymbol,price_open,price_high,price_low,price_close,volumewhereymd='20170928'insertoverwritetablestock_tpartition(ymd='20170929')selectsymbol,price_open,price_high,price_low,price_close,volumewhereymd='20170929'insertoverwritetablestock_tpartition(ymd='20170930')selectsymbol,price_open,price_high,price_low,price_close,volumewhereymd='20170930';动态分区插入Hive提供了一个动态分区功能,可以基于查询参数推断出需要创建的分区名称insertoverwritetablestock_tpartition(ymd)selectsymbol,price_open,price_high,price_low,price_close,volume,ymdfromstocks;动态分区功能默认情况下是没有开启的,需要将hive.exec.dynamic.partition.mode设置为nonstrict导出数据从表中导出数据如果文件恰好是用户需要的格式,那么只需要简单拷贝文件夹或者文件就可以了。
hadoopfs-cpsource_pathtarget_path否则,用户可以使用insert…directory…insertoverwrite[local]directory'/home/hadoop/emp'selectname,salary,addressfromemployees;关系运算空值判断selectname,salaryfromemployeeswheresalaryisnull;LIKE比较selectname,salaryfromemployeeswherenamelike'l%';浮点数比较(可选)浮点数比较的一个常见问题是出现在不同类型做比较(float和double比较)selectname,salary,deductions["grtaxes"]fromemployeeswheredeductions[“grtaxes”]>0.2;对指定的值进行显示的类型转换selectname,salary,deductions["grtaxes"]fromemployeeswheredeductions["grtaxes"]>cast(0.2asfloat);数学函数取整函数selectround(3.1415)fromemployees;指定精度取整函数selectround(3.1415,2)fromemployees;向下取整函数selectfloor(3.1415)fromemployees;向上取整函数selectceil(3.1415)fromemployees;取随机数函数selectrand()fromemployees;
字符串函数
字符串长度函数selectlength(name)fromemployees;字符串连接函数selectconcat(name,'@')fromemployees;字符串截取函数selectsubstr(name,2)fromemployees;selectsubstr(name,1,2)fromemployees;字符串转大写函数selectupper(name)fromemployees;去空格函数
selecttrim(name)fromemployees;
聚合函数个数统计函数selectcount(*)fromemployees;总和统计函数selectsum(salary)fromemployees;平均值统计函数
selectavg(salary)fromemployees;最小最大值selectmin(salary),max(salary)fromemployees;数据表的join—innerjoinselecta.ymd,a.symbol,a.price_close,b.symbol,b.price_closefromstocksajoinstocksbona.ymd=b.ymdwherea.symbol='600718'andb.symbol='002230';ON子句指定了两个表之间数据连接的条件数据表的join—innerjoin多表连接selecta.ymd,a.symbol,a.price_close,b.symbol,b.price_close,
c.symbol,c.price_close
fromstocksajoinstocksbona.ymd=b.ymd
joinstockscona.ymd=c.ymd
wherea.symbol='600718'andb.symbol='002230'andc.symbol='000977';数据表的join—innerjoin练习产生数据集countword,将countword和之前产生的另外一个wordcount数据集进行联合查询创建一个中间数据表merged,用于存储查询结果将两个数据集的交集保存在数据表merged中数据表的join—leftouterjoin左外连接通过关键字leftouter进行标识selects.ymd,s.symbol,s.price_close,d.dividendfromstockssleftouterjoinstocks_divdons.ymd=d.ymdands.symbol=d.symbol;数据表的join—Rightouterjoin右外连接将返回右边表所有符合where语句的记录,左边表中匹配不上的字段值用null代替。selects.ymd,s.symbol,s.price_close,d.dividendfromstocks_divdrightouterjoinstockssons.ymd=d.ymdands.symbol=d.symbol;数据表的join—Fullouterjoin完全外连接会返回所有表中符合where语句条件的所有记录,如果任一表的指定字段没有符合条件的值,那么就会使用null值代替。selects.ymd,s.symbol,s.price_close,d.dividendfromstocks_divdfullouterjoinstockssons.ymd=d.ymdands.symbol=d.symbol;数据表的join—leftsemijoinleftsemijoin(左半开连接)类似exists。即查找a表中的数据,是否在b表中存在,找出存在的数据。selects.ymd,s.symbol,s.price_closefromstockssleftsemijoinstocks_divdons.ymd=d.ymdands.symbol=d.symbol;笛卡尔积join笛卡尔积是一种连接,表示左边表的行数乘以右边表的行数等于笛卡尔结果集的大小。select*fromstocksjoinstocks_div;Orderby和SortbyOrderby会对查询结果集执行一个全局排序,所有的数据都通过一个reducer进行处理。Sortby会在每个reducer中对数据进行排序,保证每个reducer的输出数据都是有序的,这样可以提高后面进行的全局排序的效率。select*fromwordcountwherefreq>10orderbyfreqdesclimit10;select*fromwordcountwherefreq>10sortbyfreqdesclimit10;DistributebyDistributeby控制map的输出在reducer中的划分使用Distributeby来保证具有相同值的数据被分发到同一个reducer中进行处理,然后使用sort
by对数据进行排序。selectymd,symbol,price_closefromstocksdistributebysymbolsortbysymbol,ymd;抽样查询对于非常大的数据集,用户有时需要使用的是一个具有代表性的查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品进店合同协议
- 商拍拍摄合同协议
- 恋爱协议书合照模板
- 2025至2030年中国自攻钻床数据监测研究报告
- 因数中间或末尾有零的乘法综合测试习题大全附答案
- 青少年篮球技术提升计划
- 二年级数学教育改革实施计划
- 小学2025秋季学期家庭教育指导计划
- 公共设施电工岗位职责与应急措施
- 小学道德教育与校园欺凌防治总结
- 消毒供应中心规范培训
- 2025重庆华地资环科技有限公司校园招聘9人笔试参考题库附带答案详解
- 易制毒化学品销售人员岗位职责
- 小区二次供水水箱清洗消毒的监督流程课件
- 2024年安徽省公务员【申论】考试真题及答案-(A卷+B卷+C卷)三套
- 自主智能系统知到课后答案智慧树章节测试答案2025年春哈尔滨工程大学
- GB/T 6433-2025饲料中粗脂肪的测定
- 2019版 浙科版 高中生物学 必修2 遗传与进化《第二章 染色体与遗传》大单元整体教学设计2020课标
- 【MOOC期末】《介入放射学》(东南大学)中国大学慕课答案
- DB50T 771-2017 地下管线探测技术规范
- 防灾减灾培训(安全行业讲座培训课件)
评论
0/150
提交评论