zoukankan      html  css  js  c++  java
  • Hive安装与简单使用并集成SparkSQL

    Hive环境搭建

    1. hive下载:https://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz
      wget https://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz

    2. 解压
      tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C …/apps/

    3. 系统环境变量(vim ~/.bash_profile)

    	export HIVE_HOME=/root/apps/hive-1.1.0-cdh5.7.0
    	export PATH=$HIVE_HOME/bin:$PATH
    	source ~/.bash_profile
    
    1. 配置

      4.1 $HIVE_HOME/conf/hive-env.sh 中导出

    # 大家注意修改成自己的配置目录及版本
    export JAVA_HOME=
    export HADOOP_HOME=
    export HIVE_CONF_DIR=hive/conf
    
    4.2 拷贝mysql 驱动架包到$HIVE_HOME/lib
    
    
    
    4.3 vim hive-site.xml
    
    <?xml version="1.0"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    	<configuration>
    		<property>
    			<name>javax.jdo.option.ConnectionURL</name>
    			<value>jdbc:mysql://spark003:3306/hive?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>123456</value>
    		</property>	
    		
      <property> 
        <name>hive.metastore.warehouse.dir</name>  
        <value>/hive/warehouse</value> 
      </property>  
      
      <property> 
        <name>hive.exec.scratchdir</name>  
        <value>/hive/tmp</value> 
      </property>  
      
      <property> 
        <name>hive.querylog.location</name>  
        <value>/hive/log</value> 
      </property>  
      
      <property> 
        <name>hive.metastore.schema.verification</name>  
        <value>false</value> 
      </property> 
      
    	</configuration>
    	
    

    在hive-site.xml的配置当中,我们主要设置了hive元数据库的链接信息,我们使用的是mysql数据库,所以制定了mysql数据库的jdbc地址、驱动、用户和密码等等。 还配置了Hive在HDFS上的一些相关的目录。接下来我们需要在HDFS上创建相关的目录。

    hdfs dfs -mkdir /hive/warehouse
    hdfs dfs -mkdir /hive/log
    hdfs dfs -mkdir /hive/tmp
    hdfs dfs -chmod -R 777 /hive
    

    我们启动Hive的MetaStore(元数据服务)和HiveServer2(支持JDBC的查询服务),启动完成之后,通过jps -m可以看到相关服务的状态。

    hive --service metastore &
    hive --service hiveserver2 &
    

    #查看服务是否启动
    jps -m

    6 验证

    Hive Client方式

    启动Hive: $HIVE_HOME/bin/hive
    
    show databases;
    
    show tables;等操作
    

    JDBC客户端方式

    #beeline JDBC客户端方式,执行beeline进入交互式命令行
    beeline
    #链接hiveserver2,默认的配置端口为10000,大家可以修改配置进行更改
    !connect jdbc:hive2://localhost:10000
    #链接成功之后可以进行相关操作
    show tables;
    desc test;
    

    Hive的基本使用

    创建表

    create table test_table(name string);

    加载本地数据到hive表【local方式】

    load data local inpath ‘/home/hadoop/data/hello.txt’ into table test_table;

    查询,统计,词频的个数:
    select * from test_table;

    select word, count(1) from test_table lateral view explode(split(name),’ ’) wc as word group by word;

    lateral view explode(split(name),’ ’) :把每行数据按照指定的分隔符进行拆解
    hive SQL 提交以后,会生成MapReduce作业,并在Yarn之上运行

    小案例

    create table emp(
    empno int,
    ename string,
    job string,
    mgr int,
    sal double,
    comm double,
    deptno int
    )row format delimited fields terminated by ‘ ’;

    create table dept(
    deptno int,
    dname string,
    location string
    )row format delimited fields terminated by ‘ ’;

    load data local inpath ‘/home/hadoop/data/emp.txt’ into table emp;
    load data local inpath ‘/home/hadoop/data/dept.txt’ into table dept;

    统计分析:
    求每个部门的人数:
    select deptno,count(1) from emp group by deptno;

    Spark SQL 与Hive集成(spark-shell)

    之前需要启动hive-metastore thrift ,【得到9083端口】

     nohup hive --service metastore > ./log/metastore.log 2>&1 &
    
    1. 将hive的配置文件hive-site.xml拷贝到spark conf目录,同时添加metastore的url配置。
    <?xml version="1.0"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
            <name>hive.metastore.uris</name>
            <value>thrift://spark001:9083</value>
    </property>
    </configuration>
    
    1. mysql jar包到 spark 的 lib 目录下
    [root@spark001 lib]# pwd
    /root/apps/spark-2.2.0-bin-2.6.0-cdh5.7.0/lib
    [root@spark001 lib]# ll
    total 972
    -rw-r--r--. 1 root root 992805 Oct 23 23:59 mysql-connector-java-5.1.41.jar
    
    
    1. 修改spark-env.sh 文件中的配置

    操作: vim spark-env.sh,添加如下内容:

    export JAVA_HOME=/root/apps/jdk1.8.0_144
    export SPARK_HOME=/root/apps/spark-2.2.0-bin-2.6.0-cdh5.7.0
    export SCALA_HOME=/root/apps/scala-2.11.8
    #新添加下面的这一条
    export HADOOP_CONF_DIR=/root/apps/spark-2.2.0-bin-2.6.0-cdh5.7.0/etc/hadoop
    
    1. 启动服务
      启动hadoop start-all.sh
      启动saprk start-all.sh
      启动mysql元数据库 service mysqld restart
      启动hive metastore服务 hive --service metastore
      启动hive命令行 hive
      启动spark-shell命令行 spark-shell

    2. 简单测试
      创建本地文件 test.csv,内容如下:
      0001,spark
      0002,hive
      0003,hbase
      0004,hadoop

    执行hive命令:

    hive> show databases;
    hive> create database databases1;
    hive> create table if not exists test(userid string,username string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ’ ’ STORED AS textfile;
    hive> load data local inpath “/root/test.csv” into table test;
    hive>select * from test;

    执行Spark-shell命令:

    spark.sql(“select * from databases1.test”).show

  • 相关阅读:
    对象
    函数3
    函数2-作用域
    事件的分类
    函数1
    简单了解JSON Web令牌(JWT)
    Pycharm激活码,2020年9月29日最新激活码
    Python基础学习之常用模块
    python详细图像仿射变换讲解
    Python如何快速复制序列?
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614783.html
Copyright © 2011-2022 走看看