Hive

Hive中使用 with as 优化SQL

时光怂恿深爱的人放手 提交于 2020-08-07 04:23:14
背景: 当我们书写一些结构相对复杂的SQL语句时,可能某个子查询在多个层级多个地方存在重复使用的情况,这个时候我们可以使用 with as 语句将其独立出来,极大提高SQL可读性,简化SQL~ 注:目前 oracle、sql server、hive等均支持 with as 用法,但 mysql并不支持! 2019-05-31更新:MySQL8.0大量更新优化,支持Common table expressions,即支持 with 语法! 一、介绍 with as 也叫做子查询部分,首先定义一个sql片段,该sql片段会被整个sql语句所用到,为了让sql语句的可读性更高些,作为提供数据的部分,也常常用在union等集合操作中。 with as就类似于一个视图或临时表,可以用来存储一部分的sql语句作为别名,不同的是with as 属于一次性的,而且必须要和其他sql一起使用才可以! 其最大的好处就是适当的提高代码可读性,而且如果with子句在后面要多次使用到,这可以大大的简化SQL;更重要的是:一次分析,多次使用,这也是为什么会提供性能的地方,达到了“少读”的目标。 二、使用 WITH t1 AS ( SELECT * FROM carinfo ) , t2 AS ( SELECT * FROM car_blacklist ) SELECT * FROM t1 , t2 注意

OSS 数据湖实践 —— 使用EMR JindoFs Cache提升性能

妖精的绣舞 提交于 2020-08-07 03:48:01
通过使用cache缓存机制,减少数据分析处理过程中直读OSS的次数,不仅能够提高性能,更能减少与OSS的交互流量,减少数据分析成本与时间开销。 前提条件 已注册阿里云账号,详情请参见注册云账号。 已开通E-MapReduce服务和OSS服务。 已完成云账号的授权,详情请参见角色授权。 已创建Haoop集群,且带有Hive组件,且配置OSS数据源。 步骤一:设置JindoFs Cache 打开smartdata服务中client配置, 把jfs.cache.data-cache.enable为1, 表示打开JindoFs的cache功能打开 步骤二:进行作业测试 数据分析作业具体可看其他OSS数据湖实践文档功能 OSS Spark 实践文档 OSS Flink 实践文档 OSS Hive 实践文档 来源: oschina 链接: https://my.oschina.net/u/4360916/blog/4292519

Hadoop凉凉?不,它仍是大厂铁饭碗

守給你的承諾、 提交于 2020-08-07 01:45:20
关于Hadoop可能很多都是坏消息。 在2018年10月,最大的两个Hadoop发行版厂商Cloudera和Hortonworks宣布合并,抱团取暖,由于财报不太好,高层也离职了。还有第三大Hadoop发行版厂商MapR差点破产,幸亏最后被HPE收购....... 1 Hadoop的整体印象 一句话概括:Hadoop就是存储海量数据和分析海量数据的工具。 Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。 HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。 MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。 2 Hadoop的优势 | 高可靠性 :Hadoop 按位存储和处理数据的能力值得人们信赖。 | 高扩展性 : Hadoop 是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以干计的节点中。 | 高效性 : Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。 |

关于hive中not in不支持子查询的解决方法

喜你入骨 提交于 2020-08-06 23:31:40
表信息: 用户User表(userid,name) 黑名单BanUser表(userid,name) 问题: 找出不在黑名单中的用户信息(userid,name) hive暂时不支持以下查询方式: select aa . * from user aa where aa . user not in ( select a . userid from banuser a ) ; 方法一:使用not exists进行改写 select aa . * from user aa where not exists ( select a . userid from banuser a where a . userid = aa . userid ) ; 方法二:使用left join进行改写 select a . userid , a . name from user a left join banuser b on a . userid = b . userid where b . userid is null ; 来源: oschina 链接: https://my.oschina.net/u/4374048/blog/4315562

伪分布式环境下启动Hadoop下的Hive

两盒软妹~` 提交于 2020-08-06 23:23:18
在本地搭建好伪分布式环境,打开虚拟机进入linux系统,如果是在root用户下则需要切换至Hadoop用户 su - hadoop 按需输入hadoop密码 在hadoop家目录下启动Hadoop集群 start-all. sh 查看进程,检查是否正常启动 jps 进入Hive安装目录 (具体目录可能不一样 正确即可) cd /opt/module/apache-hive- 3.1 . 1 -bin/ 注意 :不要进入/opt/module/apache-hive-3.1.1-bin/bin中启动hive,因为日志之类的数据在apache-hive-3.1.1-bin目录下。 启动hive bin/hive 然后就可以用Hive sql语句做相应操作了 操作完成 退出Hive quit; exit; 上一篇:Hadoop的shell操作 来源: oschina 链接: https://my.oschina.net/u/4294583/blog/4300926

Hive SQL优化方式及使用技巧

时间秒杀一切 提交于 2020-08-06 19:52:40
HIVE简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询,可以将sql语句转换为MapReduce任务进行运行 同时,hive也允许熟悉map-reduce的开发者开发自定义的mapper和reducer来处理内建的mapper和reducer无法处理的复杂的分析工作。 用户发出sql命令----> hive处理并转换为MapReduce---->提交任务到hadoop并运行在hdfs HIVE DDL Hive建表(压缩表和非压缩表) 一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在于表文件夹的目录下 创建表:指定exterbal关键字的就是外部表,没有就是内部表。内部表在drop的时候会从hdfs上删除数据,外部表不会删除 如果不指定数据库,hive会把表创建在默认数据库下。 创建内部表: create table if not exists `my_inner_table`( `id` bigint comment ' 逻辑id,记录的唯一id ' , ` user_id ` string comment ' user_id ' ) comment ' 内部表 ' partitioned by (`dt` string comment ' date, yyyy-MM-dd ' ) ROW

使用Hadoop分析气象数据完整版(附带完整代码)

你。 提交于 2020-08-06 19:49:59
《分布式》布置了一道小作业,让我花了7天时间学习了Hadoop。。。现在终于可以正式地做这个作业了,记录一下。 使用Hadoop分析气象数据 1 获取数据 1.1 下载数据 1.2 数据格式 1.3 合并数据 2 MapReduce处理数据 2.1 环境配置,启动集群 2.2 上传到HDFS 2.2 编写MapReduce代码 2.2.1 TemperatureMapper 2.2.2 TemperatureReducer 2.2.3 JobMain 2.3 执行 2.3.1 打包、上传 2.3.2 运行 3 导入数据到Hive 4 Hive数据分析 5 使用Sqoop导入数据到Mysql 5.1 Mysql创建数据库 5.2 开始导入 6 展示数据 6.1 前端代码 6.2 后端代码 1 获取数据 1.1 下载数据 注意:为了不出现横向拖拉,命令里我加了换行,所有命令都是如此。 获取命令: wget -D --accept-regex = REGEX -P data -r -c ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-lite/2019/5* 注意:下载可能出现卡顿,直接 ctrl+c 中断,然后再次输入命令即可。 我就下载了下面这么多,共计78429条。 1.2 数据格式 截取部分数据,格式如下: 2019 01 01 00 -65

大数据采集和抽取怎么做?这篇文章终于说明白了!

江枫思渺然 提交于 2020-08-06 10:52:14
本文来源于公众号【胖滚猪学编程】,转载请注明出处! 关于数据中台的概念和架构,我们在 大白话 六问数据中台 和 数据中台全景架构及模块解析!一文入门中台架构师! 两篇文章中都说明白了。从这一篇文章开始分享中台落地实战。 其实无论是数据中台还是数据平台,数据无疑都是核心中的核心,所以闭着眼睛想都知道数据汇聚是数据中台/平台的入口。纵观众多中台架构图,数据采集与汇聚都是打头阵的: 本文将从以下几个方面分享数据采集的方方面面: 一、企业数据来源 二、数据采集概念和价值 三、数据采集常用工具 四、数据采集系统设计原则 五、数据采集模块生产落地分享 有来源才能谈采集,因此我们先来归纳下企业中数据来源。 数据来源 企业中的数据来源极其多,但大都都离不开这几个方面: 数据库,日志,前端埋点,爬虫系统等。 数据库我们不用多说,例如通常用mysql作为业务库,存储业务一些关键指标,比如用户信息、订单信息。也会用到一些Nosql数据库,一般用于存储一些不那么重要的数据。 日志也是重要数据来源,因为日志记录了程序各种执行情况,其中也包括用户的业务处理轨迹,根据日志我们可以分析出程序的异常情况,也可以统计关键业务指标比如PV,UV。 前端埋点同样是非常重要的来源,用户很多前端请求并不会产生后端请求,比如点击,但这些对分析用户行为具有重要的价值,例如分析用户流失率,是在哪个界面,哪个环节用户流失了

OSS数据湖实践——EMR + Hive + OSS案例

半世苍凉 提交于 2020-08-06 08:14:48
Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;本文通过一个简单的示例来展现如何结合OSS+EMR+Hive来分析OSS上的数据。 前提条件 • 已注册阿里云账号,详情请参见注册云账号。 • 已开通E-MapReduce服务和OSS服务。 • 已完成云账号的授权,详情请参见角色授权。 • 已创建Haoop集群,且带有Hive组件, 且配置好OSS数据源。 步骤一:上传数据至OSS hadoop fs -put course.csv oss://your-bucket-name/ 步骤二:创建Hive作业开发页面 步骤三:SQL 实现 创建数据表 CREATE TABLE course (num INT, subject string, level string) row format delimited fields terminated by "," location "/"; 导入数据 LOAD DATA INPATH 'oss://your-bucket-name/course.csv' INTO TABLE course; 查询语句 select A.suject, A.level, A.count from (select suject, level, count(*) as count from course