【Spark SQL】3、大数据数据仓库Hive的学习

大数据数据仓库Hive
产生背景
  • MapReduce编程的不变性
  • HDFS上的文件缺失schema

用于处理海量结构化的日志数据统计问题

构建在Hadoop之上的数据仓库

Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)

通常用于进行离线数据处理

支持多种不同的压缩格式(GZIP、LZO、Snappy、BZIP2)、存储格式(TextFile/SequenceFile/RCFile/ORC/Parquet)以及自定义函数

Hive底层的执行引擎有:MapReduce/Tez/Spark

Hive环境搭建

下载hive-1.1.0-cdh5.7.0.tar.gz

配置

  • 配置系统环境变量

    HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
    export PATH=$PATH:$HIVE_HOME/bin
    
  • ./conf/hive-env.sh配置HADOOP_HOME

    将hive-env.sh.template 复制出来一个hive-env.sh

  • 事先安装一个mysql,把数据库信息配置到hive-site.xml(conf下新建)

<configuration>
  <property>
  	<name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.9.108:3306/sparksql?createDatabaseIfNotExist=true</value>
  </property>
  <property>
  	<name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
  	<name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  <property>
  	<name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>
</configuration>
  • 把mysql驱动包放到hive的lib下

  • 启动Hive: $HIVE_HOME/bin/hive

hive依赖hadoop hdfs,所以启动hive时 确保已经启动hadoop hdfs

问题:mysql与jdk不兼容,需在虚拟机上安装mysql

Hive的使用
  • 创建表

    create table hive_wordcount(context string)
    

    创建好表后,表名可以在数据库/TBLS看,表中的字段可以在COLUMNS_V2里看

  • 从Linux文件系统加载数据到hive表

    load data local inpath '/home/hadoop/data/hello.txt' into table hive_wordcount
    select * from hive_wordcount;
    
  • 统计词频

    select word,count(1) from hive_wordcount lateral view explode(split(context,'\t')) wc as word group by  word;
    -- lateral view explode():是把每行记录按照指定分隔符进行拆解
    

    Hive sql提交执行以后会生成mr作业,并在yarn上运行

create table people(
id string,
name string,
likes array<string>,
addr map<string,string>
)
row format delimited
fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':';
# 从本地系统加载数据到hive
load data local inpath "/data/people.txt" into table people
# 从本地系统加载数据到hive 并且会覆盖原先表中的数据
load data local inpath "/data/people.txt" overwrite into table people
# 从hdfs系统加载数据到hive
load data inpath "/data/people.txt" into table people
## people.txt
1       zs      game,gril,money stuAddr:changsha,workAddr:beijing
2       ls      game,gril,money stuAddr:changsha,workAddr:beijing
发布了84 篇原创文章 · 获赞 20 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览