Hiveのインストールとテーブルの作成

4859 ワード

目次
  • 認識Hive
  • 1. 解凍
  • 2. mysql metastoreの構成(rootユーザーに切り替える)
  • MySQL
  • をインストール
  • MySQLパスワードを変更
  • ログイン
  • 3. hiveの設定
  • hive-defaultをコピーします.xml.templateファイルをhive-siteと名前を変更します.xml、hive-siteを削除します.xmlのすべてのコンテンツを、
  • と追加します.
  • 4. hiveとmysqのインストールが完了したら、MySQLの接続jarパッケージを$HIVE_にコピーします.HOME/libディレクトリ下
  • 5. 表を作る
  • hive
  • を起動
  • のデフォルトは内部テーブル
  • です.
  • 建分区表
  • 建外部表
  • 6. パーティション表の作成
  • 一般表とパーティション表の違い:大量のデータが増加した場合、パーティション表
  • を構築する必要がある.
  • パーティションテーブルロードデータ

  • 認識する
    HiveはHadoopに基づいて構築された一連のデータウェアハウス分析システムであり、豊富なSQLクエリー方式を提供してHadoop分布式ファイルシステムに格納されたデータを分析し、構造化されたデータファイルを1枚のデータベース表にマッピングすることができ、そして完全なSQLクエリー機能を提供し、SQL文をMapReduceタスクに変換して実行することができ、自分のSQLを通じて分析に必要な内容をクエリーすることができ、このSQLはHive SQLと略称し、MapReduceに慣れていないユーザーは、SQL言語を使用してデータのクエリー、要約、分析を容易に行うことができます.
    1.解凍
    tar -zxvf hive-0.9.0.tar.gz -C /home/hadoop/app
    

    2.mysql metastoreの構成(rootユーザーに切り替える)
  • MySQL
  • をインストール
    
    ##rpm   
    rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm 
    rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
    
    ##            ,        (    mysql-libs-5.1.66-2.el6_3.i686  )
    ##       
    ##     
    rpm -qa | grep mysql
    
    ##     
    rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
    
    
  • MySQLパスワードを変更
  • 実行/usr/bin/mysql_secure_installation(注:匿名のユーザーを削除し、ユーザーのリモート接続を許可)
  • ログイン
  • 3.hiveの構成hive-default.xml.templateファイルをコピーし、hive-site.xmlと名前を変更し、hive-site.xmlのすべてのコンテンツを削除し、次の内容を追加します.
    
    
         javax.jdo.option.ConnectionURL
         jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true
         JDBC connect string for a JDBC metastore
       
    
       
         javax.jdo.option.ConnectionDriverName
         com.mysql.jdbc.Driver
         Driver class name for a JDBC metastore
       
    
       
         javax.jdo.option.ConnectionUserName
         root
         username to use against metastore database
       
    
       
         javax.jdo.option.ConnectionPassword
         root
         password to use against metastore database
       
    

    4.hiveとmysqのインストールが完了したら、MySQLの接続jarパッケージを$HIVE_にコピーします.HOME/libディレクトリの下
    権限のない問題が発生した場合は、MySQLライセンス(mysqlがインストールされているマシンで実行)
    ##   root  mysql
    mysql -u root
    
    ##          root  ,*.*          ,%            ,   root
       
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    ##  
    grant all on *.* to root@'   ' identified by 'root';
    
    

    5.建表
    Hiveの中の1枚の表はHDFSの上の1つのフォルダに対応して、1つのパーティションの対応するファイルの中のサブフォルダ、外部の表はただあるファイルのデータを指して、外部の表を削除してファイルを削除しません.
  • hiveを起動hiveインストールディレクトリのbinディレクトリの下で./hive
  • を実行する.
  • のデフォルトは内部テーブル
  • です.
     #     
     CREATE DATABASE test;
     
     #         
     USE test;
     
     #   
    CREATE TABLE IF NOT EXISTS control_20180815(ordertime STRING, userid STRING, songIndex INT, songid STRING, presource INT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\|'
    LINES TERMINATED BY '
    '; # # # hive , |,
    LOAD DATA LOCAL INPATH '/home/lmh/testModel/control-20180815' OVERWRITE INTO TABLE control_20180815; # # insert overwrite local directory '/home/lmh/testModel/myexpofen-20180815' row format delimited fields terminated by '|' select * from myexpofen_20180815;
  • 建分区表
  • create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by '\t';
    
  • 建外部表
  • create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t' location '/td_ext';
    

    6.パーティション表の作成
  • 一般表とパーティション表の違い:大量のデータが増加した場合、パーティション表
  • を構築する必要がある.
    create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by '\t'; 
    
  • パーティションテーブルロードデータ
  • ##     book.txt  book  
    load data local inpath './book.txt' overwrite into table book partition (pubdate='2010-08-22');
       
    load data local inpath '/root/data.am' into table beauty partition (nation="USA");
    
    select nation, avg(size) from beauties group by nation order by avg(size);