Hive安裝與簡單使用并集成SparkSQL

Hive環(huán)境搭建

  1. hive下載:http://archive-primary.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz
    wget http://archive-primary.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/

  1. 系統(tǒng)環(huán)境變量(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 中導(dǎo)出Hadoop_Home
    4.2 拷貝mysql 驅(qū)動架包到$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>
    </configuration>
  1. 啟動Hive: $HIVE_HOME/bin/hive

Hive的基本使用

創(chuàng)建表

create table test_table(name string);

加載本地數(shù)據(jù)到hive表【local方式】

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

查詢,統(tǒng)計,詞頻的個數(shù):
select * from test_table;

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

小案例

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

create table dept(
deptno int,
dname string,
location string
)row format delimited fields terminated by '\t';

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

統(tǒng)計分析:
求每個部門的人數(shù):
select deptno,count(1) from emp group by deptno;

Spark SQL 與Hive集成(spark-shell)

  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,添加如下內(nèi)容:

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. 啟動服務(wù)
    啟動hadoop start-all.sh
    啟動saprk start-all.sh
    啟動mysql元數(shù)據(jù)庫 service mysqld restart
    啟動hive metastore服務(wù) hive --service metastore
    啟動hive命令行 hive
    啟動spark-shell命令行 spark-shell

  2. 簡單測試
    創(chuàng)建本地文件 test.csv,內(nèi)容如下:
    0001,spark
    0002,hive
    0003,hbase
    0004,hadoop

執(zhí)行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;

執(zhí)行Spark-shell命令:

spark.sql("select * from databases1.test").show

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容