導航:首頁 > 數據分析 > hive資料庫如何查詢

hive資料庫如何查詢

發布時間:2023-10-12 13:31:27

A. java中怎麼實現查詢出hive下所有資料庫下表名

try {
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");

String selectSql = "select * from db.data where address = '11111111'";
Connection connect = DriverManager.getConnection("jdbc:hive://192.168.xx.xx:10000/db", "xxx", "xxx");
PreparedStatement state = null;
state = connect.prepareStatement(selectSql);
ResultSet resultSet = state.executeQuery();
while (resultSet != null && resultSet.next()) {
System.out.println(resultSet.getString(1) + " " + resultSet.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}

B. 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

C. 怎樣查看hive建的外部表的資料庫

1
進入HIVE之前要把HADOOP給啟動起來,因為HIVE是基於HADOOP的。所有的MR計算都是在HADOOP上面進行的。
2
在命令行中輸入:hive。這個時候就可以順利的進入HIVE了。當然了,如果你想直接執行HQL腳本文件可以這樣:hive
-f
xxxxx.hql。
3
進入hive之後一一般默認的資料庫都是default。如果你切換資料庫的話所建的表都會是在default資料庫裡面。
4
創建資料庫的語法是:create
database
database_name;非常簡單的,其實hive跟mysql的語法還是比較相似的。為什麼呢?請繼續往下
5
切換資料庫的時候可以輸入:use
database_name;
查看所有資料庫的時候可以輸入:show
databases;
查看所有表的時候可以輸入:show
tables
6
看錶結構的時候可以輸入:describe
tab_name;

D. Hive 資料庫表的基本操作,必須掌握的基本功

說明:hive 的表存放位置模式是由 hive-site.xml 當中的一個屬性指定的,默認是存放在該配置文件設置的路徑下,也可在創建資料庫時單獨指定存儲路徑。

資料庫有一些描述性的屬性信息,可以在創建時添加:

查看資料庫的鍵值對信息

修改資料庫的鍵值對信息

與mysql查詢語句是一樣的語法

刪除一個空資料庫,如果資料庫下面有數據表,那麼就會報錯

強制刪除資料庫,包含資料庫下面的表一起刪除(請謹慎操作)


[]里的屬性為可選屬性,不是必須的,但是如果有可選屬性,會使 sql 語句的易讀性更好,更標准與規范。

例如:[comment '欄位注釋信息'][comment '表的描述信息']等,[external]屬性除外


1. CREATE TABLE
創建一個指定名字的表,如果相同名字的表已存在,則拋出異常提示:表已存在,使用時可以使用IF NOT EXISTS語句來忽略這個異常。

如果創建的表名已存在,則不會再創建,也不會拋出異常提示:表已存在。否則則自動創建該表。


2. EXTERNAL
顧名思義是外部的意思,此關鍵字在建表語句中讓使用者可以創建一個外部表,如果不加該關鍵字,則默認創建內部表。

外部表在創建時必須同時指定一個指向實際數據的路徑(LOCATION),Hive在創建內部表時,會將數據移動到數據倉庫指向的路徑;

若創建外部表,僅記錄數據所在的路徑,不對數據的位置作任何改變。

內部表在刪除後,其元數據和數據都會被一起刪除。
外部表在刪除後,只刪除其元數據,數據不會被刪除。


3. COMMENT
用於給表的各個欄位或整張表的內容作解釋說明的,便於他人理解其含義。


4. PARTITIONED BY
區分表是否是分區表的關鍵欄位,依據具體欄位名和類型來決定表的分區欄位。


5. CLUSTERED BY
依據column_name對表進行分桶,在 Hive 中對於每一張表或分區,Hive 可以通過分桶的方式將數據以更細粒度進行數據范圍劃分。Hive採用對列值哈希,然後除以桶的個數求余的方式決定該條記錄存放在哪個桶當中。


6. SORTED BY
指定表數據的排序欄位和排序規則,是正序還是倒序排列。


7. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
指定表存儲中列的分隔符,這里指定的是' ',也可以是其他分隔符。


8. STORED AS SEQUENCEFILE|TEXTFILE|RCFILE
指定表的存儲格式,如果文件數據是純文本格式,可以使用STORED AS TEXTFILE,如果數據需要壓縮,則可以使用STORED AS SEQUENCEFILE。


9. LOCATION
指定 Hive 表在 hdfs 里的存儲路徑,一般內部表(Managed Table)不需要自定義,使用配置文件中設置的路徑即可。
如果創建的是一張外部表,則需要單獨指定一個路徑。


1. 使用create table語句創建表
例子:


2. 使用create table ... as select...語句創建表
例子:

使用 create table ... as select ...語句來創建新表sub_student,此時sub_student 表的結構及表數據與 t_student 表一模一樣, 相當於直接將 t_student 的表結構和表數據復制一份到 sub_student 表。


注意:
(1). select 中選取的列名(如果是 * 則表示選取所有列名)會作為新表 sub_student 的列名。

(2). 該種創建表的方式會改變表的屬性以及結構,例如不能是外部表,只能是內部表,也不支持分區、分桶。

如果as select後的表是分區表,並且使用select *,則分區欄位在新表裡只是作為欄位存在,而不是作為分區欄位存在。

在使用該種方式創建時,create 與 table 之間不能加 external 關鍵字,即不能通過該種方式創建外部目標表,默認只支持創建內部目標表。

(3). 該種創建表的方式所創建的目標表存儲格式會變成默認的格式textfile。


3.使用like語句創建表
例子:


注意:
(1). 只是將 t_student 的表結構復制給 sub1_student 表。

(2). 並不復制 t_student 表的數據給 sub1_student 表。

(3). 目標表可以創建為外部表,即:

閱讀全文

與hive資料庫如何查詢相關的資料

熱點內容
切割sql文件 瀏覽:8
文件名帶圈字母怎麼輸入 瀏覽:183
萬達購票哪個app劃算 瀏覽:410
源代碼安全測試工具 瀏覽:594
dbf轉換成word文件 瀏覽:784
puttylinux下載文件 瀏覽:412
如何開啟筆記本電腦的無線網路 瀏覽:4
下列不屬於國家核心數據有哪些 瀏覽:771
雲幣網怎麼沒app 瀏覽:562
蘋果手機裝電腦系統怎麼安裝驅動程序 瀏覽:105
win10上的deg和rad和grad 瀏覽:499
iphone6s軟體更新好不好 瀏覽:726
jscheckboxdisabled 瀏覽:472
微信發送的圖片如何粘貼到文件 瀏覽:873
手機如何傳輸文件 瀏覽:200
華為手機微信怎麼沒有信息圖標 瀏覽:695
直徑120球形圓弧怎麼編程 瀏覽:339
word2003公式中 瀏覽:423
識鳥的app哪個好 瀏覽:876
phpjquery瀑布流代碼 瀏覽:849

友情鏈接