zoukankan      html  css  js  c++  java
  • 《OD学Hive》第六周20160730

    一、Hive的JDBC连接

    日志分析结果数据,存储在hive中

    <property>
      <name>hive.server2.thrift.port</name>
      <value>10000</value>
      <description>Port number of HiveServer2 Thrift interface.
      Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description>
    </property>
    
    <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>localhost</value>
      <description>Bind host on which to run the HiveServer2 Thrift interface.
      Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>
    </property>

    hive.server2.thrift.bind.host

    如果需要远程连接,则改成主机名beifeng-hadoop-02,或者0.0.0.2(表示任何主机都可以连接)

    hiveserver2进程的启动:nohup hiveserver2 > /home/beifeng/hiveserver2.start.log 2>&1 &

    nohup hive --service hiveserver2 > /home/beifeng/hiveserver2.start.log 2>&1 &
    ps -ef | grep HiveServer2
    netstat -tlnup | grep 10000

    如果需要远程连接,则改成主机名beifeng-hadoop-02,或者0.0.0.2(表示任何主机都可以连接)

    JDBC连接
    beeline连接客户端beeline

    进入beeline交互式窗口以后,

    执行:!connect jdbc:hive2://beifeng-hadoop-02:10000

    首次用beeline访问Hive,会出现异常

    hive.server2.long.polling.timeout

    username:用户名一定要用hdfs上的用户,或者对hdfs上与hive相关的目录有写权限的用户名

    hive.metastore.warehouse

    passwd

    二、Sqoop

    1. 数据来源:

    (1)日志数据:业务系统运行过程中产生的业务日志数据(用户行为数据),上传到hdfs

    对于小数据量: shell脚本方式 hdfs dfs -put

    对于大数据量: 使用专门框架

    Flume:使用mapreduce导数据到

    LogStah:ELK   --->  E elasticsearch | L logstach | K kinbana

    (2)RMBMS的记录:需要先导入到HDFS上

    金融行业,反欺诈模型--》通过分析历史金融交易记录

    金融交易记录:一般是存储在DB2、ORACLE

    Sqoop框架:

    RMDBS <=======> HDFS

    Sqoop框架底层本质:还是mapreduce,只需要map,并发执行

    2. Sqoop架构

    sqoop

    sqoop1:包含了sqoop的核心,使用命令操作

    sqoop2:在sqoop1的基础上封装了一些服务,比如添加连接池、客户端

    导数据其实一般是通过编写脚本,定时去执行。

    3. Sqoop安装部署

    统一使用cdh版本: 各个框架之间存在版本的兼容性,

    Cloudera公司 Doug Cutting

    Cloudera Manager:集群监控、管理的工具

    cdh版本: hadoop、hive、sqoop、flume、hue、oozie

    bin/sqoop help

    bin/sqoop export

    bin/sqoop import 

    bin/sqoop list-databases

    bin/sqoop list-tables

    bin/sqoop --options-file 文件名

    4. 项目案例

    订单分析:数据来源于RDBMS

    统计的需求:

    日期维度:年

    订单金额总额、平均订单金额、最大订单金额、最小订单金额

    日期维度+地域维度:某个国家省份城市+年

    订单金额总额、平均订单金额、最大订单金额、最小订单金额

    某个客户下:历史、年

    订单金额总额、平均订单金额、最大订单金额、最小订单金额

    实现实录:

    1)将订单记录从RDBMS上导入到HDFS

    2)Hive进行统计分析

    3)将统计结果数据导出到RDBMS

    sqoop export

    bin/sqoop --list-databases

    --connection --jdbc:mysql://host:port/database

    --username

    --password

    1)用sqoop将数据导入到hdfs

    bin/sqoop help import

    bin/sqoop import

    --connection --jdbc:mysql://host:port/database

    --username

    --password

    --table cust info

    --target-dri hdfs://host/user/beifeng/import/cust_info

    --delete-target-dir

    增量导入

    --check-column  依据字段,类型应该使用数字类型

    --incremental 模式 append lastmodified

    --last-value 上次导的值

    强烈建议使用数字类型的字段进行切分

    指定map个数 --num-mappers  

    默认导入到hdfs上的文件是CSV文件(每个字段之间使用逗号隔开)。

    ====按照自定义分隔符将RDBMS表数据导入hdfs

    Output line formatting arguments:指定MapReduce输出格式

    Input parsing arguments:指mapreduce读取数据时解析数据

    --fields-terminated-by: 指定分隔符

  • 相关阅读:
    可爱的中国电信 请问我们的电脑还属于我们自己吗?
    了解客户的需求,写出的代码或许才是最优秀的............
    DELPHI DATASNAP 入门操作(3)简单的主从表的简单更新【含简单事务处理】
    用数组公式获取字符在字符串中最后出现的位置
    在ehlib的DBGridEh控件中使用过滤功能(可以不用 MemTableEh 控件 适用ehlib 5.2 ehlib 5.3)
    格式化json返回的时间
    ExtJs中使用Ajax赋值给全局变量异常解决方案
    java compiler level does not match the version of the installed java project facet (转)
    收集的资料(六)ASP.NET编程中的十大技巧
    收集的资料共享出来(五)Asp.Net 权限解决办法
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5720201.html
Copyright © 2011-2022 走看看