當前位置:首頁 » 操作系統 » hive創建資料庫

hive創建資料庫

發布時間: 2023-01-11 14:04:22

① hive資料庫怎麼建表和數據裝載

樓主說的是Hive,不是HBase。從Oracle裡面頭導出數據為平面文件後,導入HDFS裡面。Hive裡面的表結構是要自己手工定的。

建表可以自己寫個小程序實現,根據oracle字典表和hive的建表規則,每個地方使用hive的情景不同,建表也不同。數據裝載可以用sqoop來實現。

你可以安裝下SQOOP,注意這個跟HADOOP的版本要對應的,不然會出現一些問題。以下是我項目用到的例子,不過我有個更高級的方法,只需配到表就行了,就是寫個java程序,然後自動生成對應的腳本,再執行就可以了。轉載,僅供參考。

② 提問為什麼我要創建一個資料庫創建不出來求解,怎麼辦

1、mysql錯誤碼1044,許可權錯誤

當用root創建新資料庫時,發現很奇怪的問題,root許可權居然無法創建資料庫,看了網上很多文檔說是root創建密碼問題,按照網上方法修改仍然沒有起效

後來發現自已原來安裝過mysql,已經創建了var/lib/mysql 文件夾,然後卸載重裝沒有刪除這個文件夾,這個文件夾裡面的mysql許可權文件是原來的mysql用戶的,新的mysql用戶雖然用戶名也是mysql,但是ID是不一樣的,當然無法訪問原來的文件,於是發原來的mysql文件夾刪掉,重新安裝mysql,問題解決

2、啟動mysql失敗,提示:The server quit without updating PID file

查看err文件,提示是設置utf-8字元問題,原因是我在mysqld 下面用了:default-character-set=utf8

導致啟動失敗

進入/etc/my.cnf文件,把設置utf-8字元的那行刪掉,mysqld下面如果要使用utf-8,設置應該為:

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

問題解決

3、創建新資料庫hive,創建用戶hive,並授權hive資料庫許可權給hive用戶後,發現使用hive用戶登錄時報錯:

ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)

這是因為user表中有用戶名為空的用戶導致,把user表中的空用戶刪除,刷新,問題解決

執行命令如下:

delete from user where user='';

FLUSH PRIVILEGES;

③ hive創建資料庫表 報錯,如截圖,請大神賜教!

跟字元集沒有關系,這個表並沒有創建成功。

參考:

④ 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). 目標表可以創建為外部表,即:

⑤ db.properties怎麼創建

解決辦法:1.創建資料庫
hive>create database myhive;
hive>create database if not exists myhive;
2.查詢資料庫和表
hive>show databases;
hive>show tables;
使用正則表達式:
hive>show databases like 'h.*';

3.修改資料庫默認位置
hive>create database myhive
>location 'my/myhive.db'; //要指定資料庫名
1)為資料庫增加描述信息
hive>create database myhive
>comment 'this is my';
hive> desc database myhive; //顯示詳細信息

2)增加一些和其相關的鍵-值對屬性信息
hive>create database myhive
>with dbproperties('name'='lu','data'='2012-01-02');
查看:hive>desc database extended myhive;
hive>use default;

⑥ Hive入門概述

1.1 什麼是Hive

Hive:由Facebook開源用於解決海量結構化日誌的數據統計。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張表,並提供類SQL查詢功能。本質是:將HQL轉化成MapRece程序

Hive處理的數據存儲在HDFS

Hive分析數據底層的實現是MapRece

執行程序運行在Yarn上

1.2 Hive的優缺點

1.2.1 優點

操作介面採用類SQL語法,提供快速開發的能力(簡單、容易上手)。

避免了去寫MapRece,減少開發人員的學習成本。

Hive的執行延遲比較高,因此Hive常用於數據分析,對實時性要求不高的場合。

Hive優勢在於處理大數據,對於處理小數據沒有優勢,因為Hive的執行延遲比較高。

Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。

1.2.2 缺點

1.Hive的HQL表達能力有限

(1)迭代式演算法無法表達

(2)數據挖掘方面不擅長

2.Hive的效率比較低

(1)Hive自動生成的MapRece作業,通常情況下不夠智能化

(2)Hive調優比較困難,粒度較粗

1.3 Hive架構原理

1.用戶介面:Client

CLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)

2.元數據:Metastore

元數據包括:表名、表所屬的資料庫(默認是default)、表的擁有者、列/分區欄位、表的類型(是否是外部表)、表的數據所在目錄等;

默認存儲在自帶的derby資料庫中,推薦使用MySQL替代derby存儲Metastore

3.Hadoop

使用HDFS進行存儲,使用MapRece進行計算。

4.驅動器:Driver

(1)解析器(SQL Parser):將SQL字元串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、欄位是否存在、SQL語義是否有誤。

(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。

(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。

(4)執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就是MR/Spark。

Hive通過給用戶提供的一系列交互介面,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapRece,提交到Hadoop中執行,最後,將執行返回的結果輸出到用戶交互介面。

1.4 Hive和資料庫比較

由於 Hive 採用了類似SQL 的查詢語言 HQL(Hive Query Language),因此很容易將 Hive 理解為資料庫。其實從結構上來看,Hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 Hive 和資料庫的差異。資料庫可以用在 Online 的應用中,但是Hive 是為數據倉庫而設計的,清楚這一點,有助於從應用角度理解 Hive 的特性。

1.4.1 查詢語言

由於SQL被廣泛的應用在數據倉庫中,因此,專門針對Hive的特性設計了類SQL的查詢語言HQL。熟悉SQL開發的開發者可以很方便的使用Hive進行開發。

1.4.2 數據存儲位置

Hive 是建立在 Hadoop 之上的,所有 Hive 的數據都是存儲在 HDFS 中的。而資料庫則可以將數據保存在塊設備或者本地文件系統中。

1.4.3 數據更新

由於Hive是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive中不建議對數據的改寫,所有的數據都是在載入的時候確定好的。而資料庫中的數據通常是需要經常進行修改的,因此可以使用 INSERT INTO … VALUES 添加數據,使用 UPDATE … SET修改數據。

1.4.4 索引

Hive在載入數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,因此也沒有對數據中的某些Key建立索引。Hive要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。由於 MapRece 的引入, Hive 可以並行訪問數據,因此即使沒有索引,對於大數據量的訪問,Hive 仍然可以體現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的數據的訪問,資料庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。

1.4.5 執行

Hive中大多數查詢的執行是通過 Hadoop 提供的 MapRece 來實現的。而資料庫通常有自己的執行引擎。

1.4.6 執行延遲

Hive 在查詢數據的時候,由於沒有索引,需要掃描整個表,因此延遲較高。另外一個導致 Hive 執行延遲高的因素是 MapRece框架。由於MapRece 本身具有較高的延遲,因此在利用MapRece 執行Hive查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即數據規模較小,當數據規模大到超過資料庫的處理能力的時候,Hive的並行計算顯然能體現出優勢。

1.4.7 可擴展性

由於Hive是建立在Hadoop之上的,因此Hive的可擴展性是和Hadoop的可擴展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的規模在4000 台節點左右)。而資料庫由於 ACID 語義的嚴格限制,擴展行非常有限。目前最先進的並行資料庫 Oracle 在理論上的擴展能力也只有100台左右。

1.4.8 數據規模

由於Hive建立在集群上並可以利用MapRece進行並行計算,因此可以支持很大規模的數據;對應的,資料庫可以支持的數據規模較小。

熱點內容
編程找點 發布:2025-05-15 20:43:10 瀏覽:586
php上傳臨時文件夾 發布:2025-05-15 20:43:00 瀏覽:656
impala資料庫 發布:2025-05-15 20:42:12 瀏覽:648
android安裝插件 發布:2025-05-15 20:41:31 瀏覽:241
神秘顧客訪問 發布:2025-05-15 20:33:39 瀏覽:298
安卓市場手機版從哪裡下載 發布:2025-05-15 20:17:28 瀏覽:815
幼兒速演算法 發布:2025-05-15 20:15:08 瀏覽:87
best把槍密碼多少 發布:2025-05-15 20:13:42 瀏覽:549
android安裝程序 發布:2025-05-15 20:13:20 瀏覽:560
c語言跳出死循環 發布:2025-05-15 20:06:04 瀏覽:825