1. 程式人生 > >hive 基本命令介紹

hive 基本命令介紹

hive 命令列的使用
hive –help 獲取幫助資訊

    [[email protected] data]# hive --hlep --service cli

    Unrecognized option: --hlep
    usage: hive
     -d,--define <key=value>          Variable subsitution to apply to hive
                                      commands. e.g. -d A=B or --define A=B
        --database <databasename>     Specify
the database to use
-e <quoted-query-string> SQL from command line -f <filename> SQL from files -H,--help Print help information --hiveconf <property=value> Use value for given property --hivevar <key=value> Variable
subsitution to apply to hive
commands. e.g. --hivevar A=B -i <filename> Initialization SQL file -S,--silent Silent mode in interactive shell -v,--verbose Verbose mode (echo executed SQL
to the
console)
hive -e  使用方法
    hive -e 'create table hive_cli2(id int)'  #h-sql 語句,需要使用'' 括起來
    hive -e 'desc hive_cli2'
    OK
    id                      int
    hive -e 'show tables'
    hive_cli2
hive -f 的使用方法,將h-sql 語句放在檔案裡面,然後使用hive -f H-SQL_FILENAME
    # hive指令碼中的註釋在行首使用 "--",但是在cli 中不支援這樣的註釋。
    [[email protected] ~]# cat hive_file.txt 
    -- hive 指令碼檔案的註釋,測試hive -f 這個引數
    CREATE TABLE userinfo
    (
        id int,
        name string,
        age string
    )
    row format delimited fields terminated by '\t'
    lines terminated by '\n';

    show tables
    hive -f hive_file.txt  # 使用這種方式可以使hive一次執行多條命令
    輸出:
    userinfo
hive -i 和 hive -f 用法相同,兩者的區別
    hive -i filename  在進入hive終端的時候,執行filename 這個檔案,這個檔案儲存的內容一般是一些配置資訊,如設定系統屬性,增加hadoop的分散式記憶體,進行自定義的hive擴充套件的jar包
    hive -f filename  執行完檔案中的h-sql 命令後不進入hive cli 終端
hive啟動的時候,預設情況下會找bash $HOME/.hiverc 這個檔案,執行這個檔案的一些配置,等價於hive -i ~/.hiverc
${HOME}/.hivehistory 這個檔案儲存了hive cli 中執行命令的歷史記錄
hive cli 終端中可以使用tab 鍵補齊命令,使用tab鍵需要注意:如果某些行是以tab鍵開頭的話,就會產生一個常見的令人困惑的錯誤,使用者這時會看到一個"是否顯示所有可能的情況"的提示,而且輸入流後面的字元會被認為是對這個提示的回覆,也因此會導致命令執行失敗
hive -S 進入hive cli 終端後,執行命令使用靜默模式,過濾掉一些日誌資訊(一些提示資訊,如:OK,用時等資訊,但是錯誤資訊是不會過濾掉的),只輸出結果資訊,如果是建立/刪除表,完成後沒有任何資訊返回
hive (default)> !pwd;  # hive cli 終端可以執行shell命令,前面加一個""
/root

hive cli 終端還可以執行hdfs 中的dfs命令,需要將hdfs命令去掉,直接執行dfs,但是注意不支援輸入hadoop fs -ls /。這種使用hadoop 命令的方式實際上比在base中執行要高效,因為在base中執行hadoop命令,每次都需要啟動一個新的JVM例項,而在hive中會在同一個JVM程序中執行這些命令
hive (default)> dfs -ls /;  # 等價於bash 中 hdfs dfs -ls / 或者 bash 中 hadoop fs -ls /
Found 4 items
-rw-r--r--   3 root supergroup        114 2018-01-25 07:59 /b.txt
drwx-wx-wx   - root supergroup          0 2018-01-26 03:34 /data
drwx-wx-wx   - root supergroup          0 2018-01-24 09:24 /tmp
drwxr-xr-x   - root supergroup          0 2018-01-24 09:21 /user
#獲得dfs 命令的幫助資訊
dfs -help;
    hive -d  a=b  #設定 k=v 在hive cli 中設定變數替換
    hive> set a;
    a=b
    hive> set hivevar:a
    a=b
hive --defin key=value  實際上和 hive cli --hivevar key=value 是等價的。二者都可以讓使用者在命令列定義使用者自定義變數以便在hive指令碼中引用,來滿足不同情況的執行。注意這個功能只有在hive 0.8 版本和之後的版本才支援

hive 中變數和屬性名稱空間:
名稱空間 使用許可權 描述
hivevar 可讀寫 hive 0.8及後續版本支援,使用者自定義變數
hiveconf 可讀寫 hive 相關配置屬性
system 可讀寫 java 定義的配置屬性
env 只讀 Shell 環境,定義的環境變數

hive 變數內部是以java 字串的方式儲存的。使用者可以在查詢中引用變數。hive會優先使用變數值替換掉查詢的變數引用,然後才會將查詢語句提交給查詢處理器

hive cli set 命令,會列印名稱空間hivevar,hiveconf,system和env中所有的變數。使用-v 標記,則還會列印Hadoop 中定義的屬性,列如HDFS 和MapReduce的屬性

    [[email protected] ~]# hive --define filed=username

    hive> set filed;
    filed=username
    hive> set hivevar:filed;
    hivevar:filed=username
    hive> set filed=user_name;
    hive> set filed;
    filed=user_name
    hive> set hivevar:filed;
    hivevar:filed=username
    hive> create table userinfo(id int,${filed} string);
    OK
    Time taken: 0.927 seconds
    hive> create table userinfo1(id int,${hivevar:filed} string);
    OK
    Time taken: 0.431 seconds
    hive> desc userinfo;
    OK
    id                      int                                         
    username                string                                      
    Time taken: 0.115 seconds, Fetched: 2 row(s)
    hive> desc userinfo1;
    OK
    id                      int                                         
    username                string                                      
    Time taken: 0.044 seconds, Fetched: 2 row(s)
    hive> 
從上面的程式碼可以看出,在shell終端使用hive命令,然後帶上--define 引數定義的變數和在hive cli 終端中使用set hivevarvariable_name=value  定義的變數等價。但是在hive cli 終端,修改以存在變數的值必須帶上hivevar: 字首,否則不生效,獲取以存在變數的值不需要帶hivevar: 這個字首。同樣的在hive cli 終端定義變數,必須帶上hivevar: 這個字首

下面兩個命令都是獲取hivevar 這個名稱空間中,foo 這個變數的值
set foo; # 如果之前沒有定義過這個變數(沒有執行這條命令 set hivevar:foo),預設是獲取hiveconf 這個名稱空間的
set hivevar:foo

set hivevar:foo=test
這個命令的意思是將hivevar 名稱空間中foo的值設定為test,如果這個變數以存在就是修改變數的值,如果這個變數不存在就建立這個變數並賦值test
set foo=test1
這條命令等同於 set hiveconf:foo=test1
set key=value 這個是設定hive的配置不是設定hive變數,屬於hiveconf 名稱空間,等價於hive-site.xml 檔案中的配置,但是離開hive終端後設置失效

詳情見下面的例項:
    hive> set var_name;
    var_name=test5
    hive> set hiveconf:var_name;
    hiveconf:var_name=test5

    hive> set hive.exec.scratchdir=/tmp/mydir;
     #等價於 ${HIVE_HOME}/conf/hive-site.xml 這個檔案中新增下面4行
      <configuration>
          <!--  前面配置省略  -->
           <property>
               <name>hive.exec.scratchdir</name>
               <value>/tmp/mydir</value>
               <description>Scratch space for Hive jobs</description>
          </property>
          <!--  後面配置省略  -->
      </configuration>
    [[email protected] ~]# hive --hiveconf y=5  


    Logging initialized using configuration in jar:file:/data/tools/hive/lib/hive-common-1.2.2.jar!/hive-log4j.properties
    hive> set y;
    y=5
    hive> select * from word_count where count=${hiveconf:y};  #hiveconf:  這個字首不能省
    OK
    by      5
    day     5
    life    5
    what    5
    when    5
    Time taken: 0.187 seconds, Fetched: 5 row(s)
--conf 等同於在hive cli 終端使用set 設定屬性一樣
    hive> set y;
    y is undefined
    hive> set y=5;
    hive> select * from word_count where count=${hiveconf:y};
    OK
    by      5
    day     5
    life    5
    what    5
    when    5
    Time taken: 0.928 seconds, Fetched: 5 row(s)
可以將env 名稱空間中的環境變數傳遞到hive cli 中

如果--hiveconf  後面接一個檔名或者目錄,貌似不起作用,這個有待研究,下面看一個例項:
    [[email protected] ~]# cat /tmp/hive-site.xml 
        <configuration>


            <property>
                <name>hive.exec.compress.output</name>
                <value>true</value>
            </property>


            <property>
                <name>map.input.file</name>
                <value>/b.txt</value>
            </property>

        </configuration>
啟動hive  
    [[email protected] ~]# hive --hiveconf /tmp/hive-site.xml 

        hive> set hiveconf:hive.exec.compress.output; # 這個屬性預設值是false,上面的配置檔案設定的是true,可是沒有生效
        hiveconf:hive.exec.compress.output=false
        hive> set map.input.file; # 這個屬性沒有預設值,上面的配置檔案設定了,可以這裡同樣沒有生效
        map.input.file is undefined
[[email protected] ~]# export a=10 # 注意這裡需要使用export 將a變成系統環境變數,如果沒有export這個關鍵字,a這個變數是無法在hive中引用的
[[email protected] ~]# echo $a
10
hive> set env:a;
env:a=10
hive> select * from word_count where count = ${env:a};
OK
a       10
we      10
Time taken: 0.501 seconds, Fetched: 2 row(s)
    另一種實現方式使用 hive -e  這樣就不需要使用export關鍵字
COUNT=5 hive -e 'select * from word_count where count=${env:COUNT}';
#輸出:
by      5
day     5
life    5
what    5
when    5
# 驗證COUNT 這個變數在hive中引用是否正確
hive -e 'select * from word_count where count=5';
#輸出結果:
by      5
day     5
life    5
what    5
when    5
# 結果一樣

當用戶不能完整記清楚某個屬性名是,可以使用下面的方法來獲得
[[email protected] ~]# hive -S -e 'set' | grep warehouse

    hive.metastore.warehouse.dir=/user/hive/warehouse
    hive.warehouse.subdir.inherit.perms=true
查詢表的時候,顯示欄位名稱
hive (default)> set hive.cli.print.header=true;
hive (default)> select * from word_count limit 3;
OK
word_count.word word_count.count
        81
a       10
about   2
Time taken: 0.396 seconds, Fetched: 3 row(s)

相關推薦

hive 基本命令介紹

hive 命令列的使用 hive –help 獲取幫助資訊 [[email protected] data]# hive --hlep --service cli Unrecognized option: --hlep

hive 基本命令

1. 建立 create: 建立資料庫、表、檢視 初級:create [database/table/view/schema] name;   在sql引擎內,均可用schema代替database 高階:create database if not exists&n

Linux基本命令介紹

1.man    顯示命令的詳細資訊      clear清屏命令 cd- -help mkdir- - help檢視命令的幫助資訊 2.date / cal / whowhoami檢視日期、日曆

Hive基本命令整理

建立表: hive> CREATE TABLE pokes (foo INT, bar STRING);         Creates a table called pokes with two columns, the first being an intege

hive 基本命令操作

Hive 是facebook開源的一個基於hadoop框架的查詢工具,也就是說,需要用hive的話,就要先安裝hadoop。這次是小結一下最近用hive的心得,經驗分享。hadoop和hive,pig,hbase的安裝配置以後專門另開個連載說比較好。 所以,我假設你已經

Windbg Extension NetExt 使用指南 【2】 ---- NetExt 的基本命令介紹

摘要 : 本章節介紹NetExt常用的命令. 並且對SOS進行一些對比. NetExt的幫助 要想玩好NetExt, 入門就得看幫助. 看NetExt的幫助可以呼叫!whelp 命令. 這樣hi列舉出NetExt所支援的所有命令. 0:000> !netext.whelp netext ve

linux下部分文件管理類基本命令匯總以及bash展開特性介紹

sil 報錯 生效 依次 知識 屏幕 dde context target 一、文件管理類基本命令 1.1、表格匯總 今天要講解的命令如下表所示,按照外部命令和內建命令做基本劃分: 內建命令列表: 命令名字 基本說明 file 檢測文件類型 cd 改變sh

mongodb基本命令操作介紹

專案中有些時候會存一些非結構化的文件型資料,可以用mongodb進行儲存。 常用的mongodb的基本操作命令: 首先啟動mongodb服務,並進入mongodb的客戶端命令列介面 一、顯示所有的庫Database命令: show databases; 如圖示 二、使用進入某個Da

window dos基本操作命令介紹

1 echo 和 @回顯命令@                        #

Hive基本操作,DDL操作(建立表,修改表,顯示命令),DML操作(Load Insert Select),Hive Join,Hive Shell引數(內建運算子、內建函式)等

1.  Hive基本操作 1.1  DDL操作1.1.1    建立表 建表語法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name    

Linux基本內容介紹(5) --rpm與yum的使用,at和crontab命令簡介,以及sed的常用操作

rpm命令 概述 命令使用 yum命令 概述 命令使用 at命令 sed命令 概述 命令使用 rpm命令 概述 rpm軟體是用於在redhat系列的Linux發行版中管理軟體包的工具。rpm包中包含的是二進位制的可執行

monkey介紹以及基本命令

一、Monkey 簡介 Monkey 就是SDK中附帶的一個工具。Monkey是Android中的一個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性

Linux 關於Docker介紹、Linux(Centos7.3)下安裝、Docker加速器配置、Docker-compose安裝以及基本命令的使用介紹

今天給各位同學進行Docker方面的知識介紹,一方面Docker的技術越來越火了,而且現在容器化也是一個發展趨勢,另一方面,Docker確實用起來相當方便,降低了運維的門檻,讓我們開發也能在不需要有太多linux的功底下,快速安裝很多我們所需要的第三方功能

hive的語法命令介紹

1.hive的基本語法: create databases mydb #建立資料庫 show databases #檢視所有的庫 use mydb #切換資料庫 create table t_user(id int ,name string,a

hive 資料來源 使用mysql; hive 啟動報錯; 載入資料 建表等基本命令

-bash: se: command not found [[email protected] local]# service mysqld status mysqld is stopped [[email protected] local]# serv

[Linux] Linux 中的基本命令與目錄結構(初稿)

展開 src 文件名 auto 使用 bin target editor 提示符 Linux 中的基本命令與目錄結構 目錄 一、Linux 基本目錄結構 二、基本命令 三、瀏覽目錄 四、中間命令 五、更改密碼 六、環境變量和 shell 變量 七、命令路

[Linux] Linux 中的基本命令與目錄結構(待移除)

head 命令 存在 壓縮 下載 創建文件 name 批處理 targe 簡化 Linux 中的基本命令與目錄結構 目錄 一、Linux 基本目錄結構 二、基本命令 三、瀏覽目錄 四、中間命令 五、更改密碼 六、環境變量和 shell 變量 七、命令路徑

cordova 基本命令 以及如何添加,刪除插件

src 全局 target node col rms rdo 下載安裝 firefox 1.首先下載安裝 node.js 在命令提示符 裏 輸入 node -v 會顯示版本號證明安裝成功 2.全局安裝 cordova: npm install -g cordova

saltstack安裝+基本命令

download 查看 pac 部分 接收 ping tab ask rest 環境: node1:172.16.1.60 OS:centos 7.3 master hostname:centos7u3-1 node2:172.16.1.61 OS:centos 7.3

Linux常用基本命令

顯示 -h 使用 shutdown str shu date syn 常用 1、顯示日期的指令: date 2、顯示日歷的指令:cal cal 顯示本月 cal 4 2017 顯示2017年4月的日歷 cal 2017 顯示2017年12個月的日歷 3、簡單好用