導航:首頁 > 程序命令 > hiveshell命令

hiveshell命令

發布時間:2023-03-20 17:30:47

① 如何在hive的shell中使用hadoop shell 和linux命令

調用文件系統(FS)Shell命令應使用 bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路徑作為參數。URI格式是scheme://authority/path。對HDFS文件系統,scheme是hdfs,對本地文件系統,scheme是file。其中scheme和authority參數都是可選的,如果未加指定,就會使用配置中指定的默認scheme。一個HDFS文件或目錄比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更簡單的/parent/child(假設你配置文件中的默認值是namenode:namenodeport)。大多數FS Shell命令的行為和對應的Unix Shell命令類似,不同之處會在下面介紹各命令使用詳情時指出。出錯信息會輸出到stderr,其他信息輸出到stdout。 cat 使用方法:hadoop fs -cat URI [URI …] 將路徑指定文件的內容輸出到stdout。 示例: hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2 hadoop fs -cat file:///file3 /user/hadoop/file4 返回值

② shell腳本里如何保存hive的結果

比如mysql xxx -e "select * from table"肢純>file 寫入文件
hive只要有終端命中早令都歷培咐可以保存

③ 解決配置hive時出現不能載入自己修改的hive-site.xml等配置文件的問題。

配置hive時出現不能載入自己修改的hive-site.xml等配置文件的問題。發現它總是載入默認的配置文件。
解決:
hadoop的配置文件hadoop-env.sh中加上export HADOOP_CLASSPATH=$HIVE_HOVE/conf:$HADOOP_CLASSPATH
還有一個問題:運行其他hadoop子項目時總會出現遲好找不到類文件,必須把相關jar包拷貝到hadoop的lib目錄下,導致其lib目錄會越來越大。
至今不知道怎樣將其他jar包加入到classpath中,網上說用export HADOOP_CLASSPATH=「」,但是好像不行
hive --config /root/etc/hive(註:/root/etc/hive是指hive-site.xml的存放目錄)

HiveQL以分號結束。可以跨行。
在hive的shell上可以返旦虧使用dfs命令執行HDFS文件操作。
dfs -ls /user/hive/漏神warehouse;

hive語句必須以分號「;」結束。
不支持更新,索引和事務。
表名,列名不區分大小寫。
在hive的shell上可以使用dfs命令執行HDFS文件的操作。>>dfs -ls /user/hive/warehouse/;
查看和設置臨時變數:>>set fs.default.name[=hdfs://zhaoxiang:9000] ;
導入jar包: >>add jar hivejar.jar;
創建函數: >>create temporary function udfTest as 'com.cstore.udfExample';
【在pig中使用UDF,先用register語句注冊jar文件,之後可以通過完全的java類名調用,或者用define語句為UDFding 指定一個名稱:
register pigjar.jar;
define UPPER org.pigjar.string.UPPER();
B = foreach a generate UPPER($0); 】

可以在本地命令行運行hive的shell:
$ hive -e 'select * from userinfo' (執行hiveQL語句)
$ hive --config /hive-0.9.0/conf (重新載入新的配置文件)
$ hive --service hiveserver 50000(啟動服務)

create table cite(citing int, cited int) row format delimited fields terminated by ',' stored as textfile; //sequencefle

load data (local) inpath 'cite75_99.txt' overwrite into table cite;//若不加local則默認為HDFS路徑

select * from cite limit 10;

show tables;
describe cite;

select count(1)/count( ) from cite; //count(1)相當於SQL中的count( )

create table cite_count (cited int, count int);

insert overwrite table cite_count select cited , count(citing) from cite group by cited;

select * from cite_count where count > 10 limit 10;

drop table cite_count;

create table page_view(viewTime int, userid bigint,
page_url string, referrer_url string,
ip string comment 'ip address of user')
comment 'this id the page view table'
partitioned by (dt string, country string)//注意table中的列不能和partition中的列重合
clustered by (userid) into 32 buckets //桶
row format delimited
fields terminated by ','
collection items terminated by '\002'
map keys terminated by '\003'
lines terminated by '\n'
stored as textfile;

//取樣
select avg(viewTime) from page_view tablesample(bucket 1 out of 3 [on id]);

//創建外部表,指定目錄位置,刪除外部表時會刪除元數據,表中的數據需手動刪除
create external table page_view(viewTime int, userid bigint,
page_url string, referrer_url string,
ip string comment 'ip address of user')
location 'path/to/existing/table/in/HDFS';
//修改表
alter table page_view rename to pv;
alter table pv add columns (newcol string);
alter table pv drop partition (dt='2009-09-01');

show tables 'page_.*';

load data local inpath 'page_view.txt'
overwrite into table page_view
partition (dt='2009-09-01',country='US');

在hive的shell上執行unix命令:命令前加感嘆號(!),命令尾加分號(;).
hive> ! ls ;
hive> ! head hive_result;

//執行查詢:
insert overwrite table query-result; //eg: insert overwrite table query_result select * from page_view where country='US';
insert overwrite (local) directory '/hdfs-dir(local-dir)/query_result' query;
select country , count(distinct userid) from page_view group by countey;

//子查詢,只能在from子句中出現子查詢
select teacher, max(class-num) from
(select teacher, count(classname) as class-num from classinfo group by teacher)subquery
group by teacher;

//連接
select pv. , choice. , f.friends from page_view pv
join user u on (pv.userid=u.id)
join friends-list f on (u.id=f.uid);

//多表插入
create table mutil1 as select id, name from userinfo;
create table mutil2 like mutil1;
from userinfo insert overwrite table mutil1 select id, name
insert overwrite table mutil2 select count(distint id),name group by name;

//創建視圖
create view teacher_classnum as select teacher, count(classname) from classinfo group by teacher;

④ spark、hive、impala、hdfs的常用命令

對spark、hive、impala、hdfs的常用命令作了如下總結,歡迎大家補充!

1. Spark的使用:

以通過SecureCRT訪問IP地址:10.10.234.198 為例進行說明:

先輸入:ll //查詢集群是否裝有spark

>su - mr

>/home/mr/spark/bin/beeline -u "jdbc:hive2:/bigdata198:18000/" -n mr -p ""

>show databases; //顯示其中資料庫,例如

>use bigmax; //使用資料庫bigmax

>show tables; //查詢目錄中所有的表

>desc formatted TableName; //顯示表的詳細信息,包括分區、欄位、地址等信息

>desc TableName; //顯示表中的欄位和分區信息

>select count(*) from TableName; //顯示表中數據數量,可以用來判斷表是否為空

>drop table TableName; //刪除表的信息

>drop bigmax //刪除資料庫bigmax

>describe database zxvmax //查詢資料庫zxvmax信息

創建一個表

第一步:

>create external table if not exists lte_Amaze //創建一個叫lte_Amaze的表

( //括弧中每一行為表中的各個欄位的名稱和其所屬的數據類型,並用空格隔開

DateTime String,

MilliSec int,

Network int,

eNodeBID int,

CID int,

IMSI String,

DataType int,

AoA int,

ServerRsrp int,

ServerRsrq int,

TA int,

Cqi0 Tinyint,

Cqi1 Tinyint //注意,最後一個欄位結束後,沒有逗號

)

partitioned by (p_date string, p_hour INT) //以p_date和p_hour作為分區

row format delimited fields terminated by ',' /*/*表中行結構是以逗號作為分隔符,與上邊的表中欄位以逗號結尾相一致*/

stored as textfile; //以文本格式進行保存

第二步:添加分區,指定分區的位置

>alter table lte_Amaze add partition (p_date='2015-01-27',p_hour=0) location'/lte/nds/mr/lte_nds_cdt_uedetail/p_date=2015-01-27/p_hour=0';

//添加lte_Amaze表中分區信息,進行賦值。

//並制定分區對應目錄/lte/nds/mr下表lte_nds_cdt_uedetail中對應分區信息

第三步:察看添加的結果

>show partitions lte_Amaze; //顯示表的分區信息

2. hdfs使用:

#su - hdfs //切換到hdfs用戶下 、

#hadoop fs –ls ///查看進程
# cd /hdfs/bin //進入hdfs安裝bin目錄
>hadoop fs -ls /umtsd/cdt/ //查詢/umtsd/cdt/文件目錄
>hadoop fs -mkdir /umtsd/test //在/umtsd目錄下創建test目錄
>hadoop fs -put /home/data/u1002.csv /impala/data/u5002 //將home/data/u1002.csv這個文件put到hdfs文件目錄上。put到hdfs上的數據文件以逗號「,」分隔符文件(csv),數據不論類型,直接是數據,沒有雙引號和單引號
>hadoop fs -rm /umtsd/test/test.txt //刪除umtsd/test目錄下的test.txt文件
>hadoop fs -cat /umtsd/test/test.txt //查看umtsd/test目錄下的test.txt文件內容

3hive操作使用:
#su - mr //切換到mr用戶下
#hive //進入hive查詢操作界面
hive>show tables; //查詢當前創建的所有表
hive>show databases; //查詢當前創建的資料庫
hive>describe table_name; {或者desc table_name}//查看錶的欄位的定義和分區信息,有明確區分(impala下該命令把分區信息以欄位的形式顯示出來,不怎麼好區分)
hive> show partitions table_name; //查看錶對應數據現有的分區信息,impala下沒有該命令
hive> quit;//退出hive操作界面

hive>desc formatted table_name; 查看錶結構,分隔符等信息

hive> alter table ceshi change id id int; 修改表的列數據類型 //將id數據類型修改為int 注意是兩個id

hive> SHOW TABLES '.*s'; 按正條件(正則表達式)顯示表,

[mr@aico ~]$ exit; 退出mr用戶操作界面,到[root@aico]界面

impala操作使用:
#su - mr //切換到mr用戶下
#cd impala/bin //進入impala安裝bin目錄
#/impala/bin> impala-shell.sh -i 10.10.234.166/localhost //進入impala查詢操作界面
[10.10.234.166:21000] >show databases; //查詢當前創建的資料庫
[10.10.234.166:21000] >use database_name; //選擇使用資料庫,默認情況下是使用default資料庫
[10.10.234.166:21000] > show tables; //查詢當前資料庫下創建的所有表
[10.10.234.166:21000] >describe table_name; //查看錶的欄位的定義,包括分區信息,沒有明確區分
[10.10.234.166:21000] > describe formatted table_name; //查看錶對應格式化信息,包括分區,所屬資料庫,創建用戶,創建時間等詳細信息。
[10.10.234.166:21000] >refresh table_name; //刷新一下,保證元數據是最新的
[10.10.234.166:21000] > alter TABLE U107 ADD PARTITION(reportDate="2013-09-27",rncid=487)LOCATION '/umts/cdt/
MREMITABLE/20130927/rncid=487' //添加分區信息,具體的表和數據的對應關系
[10.10.234.166:21000] > alter TABLE U100 drop PARTITION(reportDate="2013-09-25",rncid=487); //刪除現有的分區,數據與表的關聯
[10.10.234.166:21000] >quit; //退出impala操作界面

[mr@aicod bin]$ impala-shell; 得到welcome impala的信息,進入impala 查詢操作界面

[aicod:21000] > 按兩次tab鍵,查看可以用的命令

alter describe help profile shell values

connect drop history quit show version

create exit insert select unset with

desc explain load set use

⑤ hue/oozie 調度shell執行hive腳本

前面已經有篇文章介紹如何編譯包含hive的spark-assembly.jar了,不清楚的可以翻看一下前面的文章。clouderamanager裝好的spark,直接執行spark-shell進入命令行後,寫入如下語句:valhiveContext=neworg.apache.spark.sql.hive.HiveContext(sc)你會發現沒法執行通過,因為cm裝的原生的spark是不支持sparkhql的,我們需要手動進行一些調整:第一步,將編譯好的包含hive的JAR包上傳到hdfs上配置的默認的spark的sharelib目錄:/user/spark/share/lib第二步:在你要運行spark-shell腳本的節點上的/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/lib/目錄下面,下載這個jar到這個目錄:hadoopfs-gethdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar(具體路徑替換成你自己的)桐燃。然後這個目錄下面原來會有個軟鏈接spark-assembly.jar指向的是spark-assembly-1.2.0-cdh5.3.0-hadoop2.5.0-cdh5.3.0.jar,我們把這個軟鏈接刪除掉重新創建一個同名的軟鏈接:ln-sspark-assembly-with-hive-maven.jarspark-assembly.jar,指向我們剛下載下來的那個JAR包,這個JAR包會在啟動spark-shell腳本時裝載到driverprogram的classpath中去的,sparkContext也是在driver中創建出來的,所以需要將我們編譯的JAR包替換掉原來的spark-assembly.jar包,這樣在啟動spark-shell的時候,包含hive的spark-assembly就被裝載到classpath中去了。第三步:在/opt/cloudera/parcels/CDH/lib/spark/conf/目錄下面創建一個hive-site.xml。/opt/cloudera/parcels/CDH/lib/spark/conf目錄是默認的spark的配置目錄,當然你可以修改默認配置目錄的位置。hive-site.xml內容如下:hive.metastore.localfalsehive.metastore.uristhrift://n1:9083hive.metastore.client.socket.timeout300hive.metastore.warehouse.dir/user/hive/warehouse這個應該大家都懂的,總要讓spark找到hive的元數據在哪吧,於是就有了上面一些配置。第四步:修改/opt/cloudera/parcels/CDH/lib/spark/conf/spark-defaults.conf,添加一個屬性:spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar。這個是讓每個executor下載到本地然後裝載到自己的classpath下面去的,主要是用在yarn-cluster模式。local模式由於driver和executor是同一個進程所以沒關系。以上完事之後,運行spark-shell,再輸入:valhiveContext=neworg.apache.spark.sql.hive.HiveContext(sc)應該就沒問題了。我們再執行一個語句驗證一下是不是連接的我們御告指定的hive元資料庫:hiveContext.sql("showtables").take(10)//取前十個表看看最後要重點說明一下這里的第二步第三步和第四步,如果是yarn-cluster模式的話,應該替換掉集群所有節點的spark-assembly.jar集群所有節點的sparkconf目錄都需局拆虛要添加hive-site.xml,每個節點spark-defaults.conf都需要添加spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar。可以寫個shell腳本來替換,不然手動一個一個節點去替換也是蠻累的。

⑥ hive shell的歷史記錄怎麼清除

1、建立一個文件來存儲常用命令,例如/root/history.txt,把常用命令當成文本寫進去,每個命令佔一行 2、在終端運行history -c,清除雜亂的歷史記錄 3、運行history -r /root/history.txt,把命令讀進來作為當前bash的歷史記錄

⑦ hive shell 查看有哪些第三方jar包命令

顯尺寬示表陵沖亮判姿

[java] view plain
hive> show tables;
OK
test
Time taken: 0.17 seconds, Fetched: 1 row(s)

2、創建表

[java] view plain
hive> create table test(key string);
OK
Time taken: 0.265 seconds

⑧ hive如何獲取shell當天日期,並創建分區表

⑨ hive beeline詳解

Hive客戶端工具後續將使用Beeline 替代HiveCLI ,並且後續版本也會廢棄掉HiveCLI 客戶端工卜世具,Beeline是 Hive 0.11版本引入的新命令行客戶端工具,它是基於SQLLine CLI的正州JDBC客戶端。

Beeline支持嵌入模式(embedded mode)和遠程模式(remote mode)。在嵌入式模式下,運行嵌入式的Hive(類似Hive CLI),而遠程模式可以通過Thrift連接到獨立的HiveServer2進程上。從Hive 0.14版本開始,Beeline使用HiveServer2工作時,它也會從HiveServer2輸出日誌信息到STDERR。

-f 對應查詢的腳本 script.q

--outputformat=csv2 以逗號分隔

--silent=true 靜默方式執行,注意:輸出文件的時候必須以靜默方式運行,否則輸出的型清肢文本中帶有很多程序執行信息。

上述命令執行完成後發現輸出的文件中仍然有許多空白行,好像沒有參數控制,無奈之下又使用shell命令來過濾空白行。

通過下面任意一行命令來過濾空白行,最後輸出結果正常。

⑩ hive分區的作用

Hive分區。

     是指按照數據表的某列或某些列分為多個區,區從形式上可以理解為文件夾,比如我們要收集某個大型網站的日誌數據,一個網站每天的日誌數據存在同一張表上,由於每天會生成大量的日誌,導致數據表的內容巨大,在查詢時進行全表掃描耗費的資源非常多。那其實這個情況下,我們可以按照日期對數據表進行分區,不同日期的數據存放在不同的分區,在查詢時只要指定分區欄位的值就可以直接從該分區查找。

下面從用shell命令操作分區表和從hdfs文件系統查看分區表相結合的方式加深對分區表的認識。

第一,創建分區表並將本地文件中的數據載入到分區表中。

要注意的是:首先,創建分區表的時候,要通過關鍵字 partitioned by (name  string)聲明該表是分區表,並且是按照欄位name進行分區,name值一致的所有記錄存放在一個分區中,分區屬性name的類型是string類型。當然,可以依據多個列進行分區,即對某個分區的數據按照某些列繼續分區。

其次,向分區表導入數據的時候,要通過關鍵字partition(name=「jack」)顯示聲明數據要導入到表的哪個分區,這里表示要將數據導入到分區為name=jack的分區。

再次,這里要重點強調,所謂分區,這是將滿足某些條件的記錄打包,做個記號,在查詢時提高效率,相當於按文件夾對文件進行分類,文件夾名可類比分區欄位。這個分區欄位形式上存在於數據表中,在查詢時會顯示到客戶端上,但並不真正在存儲在數據表文件中,是所謂偽列。所以,千萬不要以為是對屬性表中真正存在的列按照屬性值的異同進行分區。比如上面的分區依據的列name並不真正的存在於數據表中,是我們為了方便管理添加的一個偽列,這個列的值也是我們人為規定的,不是從數據表中讀取之後根據值的不同將其分區。我們並不能按照某個數據表中真實存在的列,如userid來分區

閱讀全文

與hiveshell命令相關的資料

熱點內容
怎麼給電腦app分身 瀏覽:820
資治通鑒pdf中華書局 瀏覽:186
穿越民國種馬 瀏覽:628
新搬來的新居電影 瀏覽:561
有個小說主角叫姜 瀏覽:602
重生德國一戰的小說 瀏覽:249
給點能看的網站 瀏覽:670
77電影網 瀏覽:68
在線可以觀看的網站 瀏覽:827
電梯日本電影 瀏覽:73
有部電影裡面有兩個人一個拿白色光劍 瀏覽:63
程序員如何自行車通勤 瀏覽:213
打開文件夾一直彈出新的窗口win10 瀏覽:475
外出2015孫藝珍完整板 瀏覽:409
男主角叫奧斯丁的電影 瀏覽:901
linux殺進程命令 瀏覽:597
主角叫秦天系統小說 瀏覽:703
韓國倫理游泳池 瀏覽:6
電影殺手為小男孩改名叫林默 瀏覽:373
現代道士電影 瀏覽:263