安裝hive和安裝mysql

來源:互聯網
上載者:User

標籤:style   blog   http   java   使用   io   strong   檔案   

首先檢查系統安裝的mysql版本,使用命令    rpm  -qa | grep mysql

若要安裝自己的版本,則先執行刪除操作       rpm  -e  xxxxx.rpm   --nodeps

然後安裝自己的版本,        rpm  -i  xxxxx.rpm

遠端連線mysql,操作步驟如下:

1、進入mysql環境中 mysql -uroot -proot

2、設定mysql,授權hive可以遠端連線mysql資料庫 grant  all on hive.* to ‘root‘@‘%‘ identified by ‘root‘;

    上面這句話的含義是,授權所有匹配hive表的任意位置的root使用者,identified by ‘root‘,是說前面root使用者的密碼,我的root使用者密碼設定的也是root。

3、設定完成後,重新整理一下     flush  privileges;

建立表的兩個步驟,首先建立一個表,然後給表載入資料。

建立一個表   CREATE TABLE t1(id int);

hive在hadoop中的表,實際上也是按檔案系統的方式存放的,因此,可以給t1表中添加資料,可以有兩種方式:

方式一,使用命令  LOAD DATA LOCAL INPATH  ‘/usr/local/id‘    INTO TABLE t1;

方式二,直接使用命令  hadoop fs -put /usr/local/id  /hive/t1

以上的id檔案是在hadoop本地上。

建立多個欄位的表t2

CREATE TABLE t2(id int,name string) FROM FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘;

然後在hadoop本地,例如/usr/local/目錄下建立一個stu檔案,裡麵包含兩個欄位,分別用定位字元分隔開

然後添加到天t2中    hadoop fs -put /usr/local/stu /hive/t2

在hive中查詢,除了select * from 語句,其他的所有語句都走mapreduce,因為select * from 是全盤掃描。

建立分區表

例如按天來存放表t3,

CREATE TABLE T3(id int)  PARTITIONED  BY  (day int);      這句話含義是,安裝天數來存放表t3

LOAD DATA LOCAL INPATH ‘/root/id‘  INTO TABLE t3  PARTITION(day=‘22‘);

LOAD DATA LOCAL INPATH ‘/root/id‘  INTO TABLE t3  PARTITION(day=‘23‘);

執行以上語句話會在hive表(對應在hadoop中是hive檔案夾)中分別建立22和23兩個檔案夾,每個檔案夾下面都有t3.

那麼查詢的時候可以使用   select * from t3 where day=22;

桶表

桶表是對資料進行雜湊取值(使用hash值對桶的個數進行模數),然後放在不同的檔案中儲存

create table t4(id int) clustered by(id) into 4 buckets;          //按照表中id那一列的hash值分配到4個桶中

    set hive.enforce.bucketing = true;

    insert into table t4 select id from t3;     //根據id的hash值將t3中的資料分配到t4的每個桶中

註:t4中每個桶對應一個檔案,裡面存放中從t3表分配過來的資料。

分區表是使用檔案進行劃分,桶表使用檔案進行劃分。

外部表格;

前面說的表都是內部表

外部表格是存放在hive表外部的,通過時用命令

create external table t5(id int) location ‘/external‘; 

可以建立一個外部表格t5,他在hive中只是一個連結,在hive中刪除t5,只是刪除了這個連結,這個表中的內容在外部還是存在的。

java用戶端操作hive:

首先啟動hive遠程服務    

即,在終端執行命令    hive --service hiveserver >/dev/null  2>/dev/null &

然後在eclipse中添加hive的lib目錄下的jar包

  1. package hive;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. public class App {
  7. public static void main(String[] args) throws Exception{
  8. Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
  9. //連結default的資料庫
  10. Connection con = DriverManager.getConnection("jdbc:hive://192.168.56.100:10000/default", "", "");
  11. Statement stmt = con.createStatement();
  12. //查詢default資料庫中的t1表
  13. String querySQL="SELECT * FROM default.t1";
  14. ResultSet res = stmt.executeQuery(querySQL);
  15. while (res.next()) {
  16. System.out.println(res.getInt(1));//注意資料庫中列是1開始的
  17. }
  18. }
  19. }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.