Hive 函数&hadoop版本的详细概述

三 Hive 函数

3.1 内置运算符

在 Hive 有四种类型的运算符:

  • 关系运算符

  • 算术运算符

  • 逻辑运算符

  • 复杂运算

    (内容较多,见《Hive 官方文档》》)

3.2 内置函数

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

  • 简单函数: 日期函数 字符串函数 类型转换
  • 统计函数: sum avg distinct
  • 集合函数
  • 分析函数
  • show functions; 显示所有函数
  • desc function 函数名;
  • desc function extended 函数名;

3.3 Hive 自定义函数和 Transform

  • UDF

    • 当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。

    • TRANSFORM,and UDF and UDAF

      it is possible to plug in your own custom mappers and reducers

      A UDF is basically only a transformation done by a mapper meaning that each row should be mapped to exactly one row. A UDAF on the other hand allows us to transform a group of rows into one or more rows, meaning that we can reduce the number of input rows to a single output row by some custom aggregation.

      UDF:就是做一个mapper,对每一条输入数据,映射为一条输出数据。

      UDAF:就是一个reducer,把一组输入数据映射为一条(或多条)输出数据。

      一个脚本至于是做mapper还是做reducer,又或者是做udf还是做udaf,取决于我们把它放在什么样的hive操作符中。放在select中的基本就是udf,放在distribute by和cluster by中的就是reducer。

      We can control if the script is run in a mapper or reducer step by the way we formulate our HiveQL query.

      The statements DISTRIBUTE BY and CLUSTER BY allow us to indicate that we want to actually perform an aggregation.

      User-Defined Functions (UDFs) for transformations and even aggregations which are therefore called User-Defined Aggregation Functions (UDAFs)

  • UDF示例(运行java已经编写好的UDF)

    • 在hdfs中创建 /user/hive/lib目录

      hadoop fs -mkdir /user/hive/lib
      
    • 把 hive目录下 lib/hive-contrib-hive-contrib-1.1.0-cdh5.7.0.jar 放到hdfs中

      hadoop fs -put hive-contrib-1.1.0-cdh5.7.0.jar /user/hive/lib/
      
    • 把集群中jar包的位置添加到hive中

      hive> add jar hdfs:///user/hive/lib/hive-contrib-1.1.0-cdh5.7.0.jar;
      
    • 在hive中创建临时UDF

      hive> CREATE TEMPORARY FUNCTION row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence'
      
    • 在之前的案例中使用临时自定义函数(函数功能: 添加自增长的行号)

      Select row_sequence(),* from employee;
      
    • 创建非临时自定义函数

      CREATE FUNCTION row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence' using jar 'hdfs:///user/hive/lib/hive-contrib-1.1.0-cdh5.7.0.jar';
      
  • Python UDF

    • 准备案例环境

      • 创建表

        CREATE table u(fname STRING,lname STRING);
        
      • 向表中插入数据

        insert into table u2 values('George','washington');
        insert into table u2 values('George','bush');
        insert into table u2 values('Bill','clinton');
        insert into table u2 values('Bill','gates');
        
    • 编写map风格脚本

      import sys
      for line in sys.stdin:
          line = line.strip()
          fname , lname = line.split('\t')
          l_name = lname.upper()
          print '\t'.join([fname, str(l_name)])
      
    • 通过hdfs向hive中ADD file

      • 加载文件到hdfs

        hadoop fs -put udf.py /user/hive/lib/
        
      • hive从hdfs中加载python脚本

        ADD FILE hdfs:///user/hive/lib/udf.py;
        ADD FILE /root/tmp/udf1.py;
        
    • Transform

      SELECT TRANSFORM(fname, lname) USING 'python udf1.py' AS (fname, l_name) FROM u;
      
  • Python UDAF

4.3 Hadoop发行版的选择

  • Apache Hadoop
    • 开源社区版
    • 最新的Hadoop版本都是从Apache Hadoop发布的
    • Hadoop Hive Flume 版本不兼容的问题 jar包 spark scala Java->.class->.jar ->JVM
  • CDH: Cloudera Distributed Hadoop
    • Cloudera 在社区版的基础上做了一些修改

    • http://archive.cloudera.com/cdh5/cdh/5/

      在这里插入图片描述

    • hadoop-2.6.0-cdh-5.7.0 和 Flume*****-cdh5.7.0 cdh版本一致 的各个组件配合是有不会有兼容性问题

    • CDH版本的这些组件 没有全部开源

  • HDP: Hortonworks Data Platform

4.4 大数据产品与互联网产品结合

  • 分布式系统执行任务瓶颈: 延迟高 MapReduce 几分钟 Spark几秒钟
  • 互联网产品要求
    • 毫秒级响应(1秒以内完成)
    • 需要通过大数据实现 统计分析 数据挖掘 关联推荐 用户画像
  • 大数据平台
    • 整合网站应用和大数据系统之间的差异, 将应用产生的数据导入到大数据系统, 经过处理计算后再导出给应用程序使用
  • 互联网大数据平台架构:

在这里插入图片描述

  • 数据采集

    • App/Web 产生的数据&日志同步到大数据系统
    • 数据库同步:Sqoop 日志同步:Flume 打点: Kafka
    • 不同数据源产生的数据质量可能差别很大
      • 数据库 也许可以直接用
      • 日志 爬虫 大量的清洗,转化处理
  • 数据处理

    • 大数据存储与计算的核心
    • 数据同步后导入HDFS
    • MapReduce Hive Spark 读取数据进行计算 结果再保存到HDFS
    • MapReduce Hive Spark 离线计算, HDFS 离线存储
      • 离线计算通常针对(某一类别)全体数据, 比如 历史上所有订单
      • 离线计算特点: 数据规模大, 运行时间长
    • 流式计算
      • 淘宝双11 每秒产生订单数 监控宣传
      • Storm(毫秒) SparkStreaming(秒)
  • 数据输出与展示

    • HDFS需要把数据导出交给应用程序, 让用户实时展示 ECharts
      • 淘宝卖家量子魔方
    • 给运营和决策层提供各种统计报告, 数据需要写入数据库
      • 很多运营管理人员, 上班后就会登陆后台数据系统
  • 任务调度系统

    • 将上面三个部分整合起来

4.5 大数据应用–数据分析

  • 通过数据分析指标监控企业运营状态, 及时调整运营和产品策略,是大数据技术的关键价值之一

  • 大数据平台(互联网企业)运行的绝大多数大数据计算都是关于数据分析的

    • 统计指标
    • 关联分析,
    • 汇总报告,
  • 运营数据是公司管理的基础

    • 了解公司目前发展的状况
    • 数据驱动运营: 调节指标对公司进行管理
  • 运营数据的获取需要大数据平台的支持

    • 埋点采集数据
    • 数据库,日志 三方采集数据
    • 对数据清洗 转换 存储
    • 利用SQL进行数据统计 汇总 分析
    • 得到需要的运营数据报告
  • 运营常用数据指标

    • 新增用户数 UG user growth 用户增长

      • 产品增长性的关键指标
      • 新增访问网站(新下载APP)的用户数
    • 用户留存率

      • 用户留存率 = 留存用户数 / 当期新增用户数
      • 3日留存 5日留存 7日留存
    • 活跃用户数

      • 打开使用产品的用户
      • 日活
      • 月活
      • 提升活跃是网站运营的重要目标
    • PV Page View

      • 打开产品就算活跃
      • 打开以后是否频繁操作就用PV衡量, 每次点击, 页面跳转都记一次PV
    • GMV

      • 成交总金额(Gross Merchandise Volume) 电商网站统计营业额, 反应网站应收能力的重要指标
      • GMV相关的指标: 订单量 客单价
    • 转化率

      转化率 = 有购买行为的用户数 / 总访问用户数
      

4.6 数据分析案例

  • 背景: 某电商网站, 垂直领域领头羊, 各项指标相对稳定

  • 运营人员发现从 8 月 15 日开始,网站的订单量连续四天明显下跌

  • 8 月 18 号早晨发现 8 月 17 号的订单量没有恢复正常,运营人员开始尝试寻找原因

    • 是否有负面报道被扩散
    • 是否竞争对手在做活动
    • 是否某类商品缺货
    • 价格异常
  • 没有找到原因, 将问题交给数据分析团队

    在这里插入图片描述

  • 数据分析师分析可能性

    • 新增用户出现问题
    • 查看日活数据, 发现日活没有明显下降
      • 基本判断, 用户在访问网站的过程中,转化出了问题

    在这里插入图片描述

  • 转化过程:

    • 打开APP
    • 搜索关键词 浏览搜索结果列表
    • 点击商品访问详情
    • 有购买意向开始咨询
    • 放入购物车
    • 支付

    在这里插入图片描述

  • 订单活跃转化率 = 日订单量 / 打开用户数

  • 搜索打开转化率 = 搜索用户数 / 打开用户数

  • 有明显降幅的是咨询详情转化率

    在这里插入图片描述

    • 对咨询信息分类统计后发现,新用户的咨询量几乎为 0
    • 于是将问题提交给技术部门调查,工程师查看 8 月 15 日当天发布记录,发现有消息队列SDK更新

Hadoop企业应用案例之消费大数据

亚马逊提前发货系统

Hadoop企业案例之商业零售大数据

智能推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucky-zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值