hive3.0.0的一些筆記
Hive只在一個節點上安裝即可 1.上傳tar包 2.解壓 tar -zxvf hive-0.9.0.tar.gz -C /cloud/ 3.安裝mysql資料庫(切換到root使用者)(裝在哪裡沒有限制,只有能聯通hadoop叢集的節點) mysql安裝僅供參考,不同版本mysql有各自的安裝流程 rpm -qa | grep mysql rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm 修改mysql的密碼 /usr/bin/mysql_secure_installation (注意:刪除匿名使用者,允許使用者遠端連線) 登陸mysql mysql -u root -p 4.配置hive (a)配置HIVE_HOME環境變數 vi conf/hive-env.sh 配置其中的$hadoop_home (b)配置後設資料庫資訊 vi hive-site.xml 新增如下內容: <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> <description>password to use against metastore database</description> </property> </configuration> 5.安裝hive和mysq完成後,將mysql的連線jar包複製到$HIVE_HOME/lib目錄下 如果出現沒有許可權的問題,在mysql授權(在安裝mysql的機器上執行) mysql -uroot -p #(執行下面的語句 *.*:所有庫下的所有表 %:任何IP地址或主機都可以連線) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES; 6. Jline包版本不一致的問題,需要複製hive的lib目錄中jline.2.12.jar的jar包替換掉hadoop中的 /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar 6. 初始化後設資料 schematool -dbType mysql -initSchema schematool -dbType mysql -info 啟動hive bin/hive ---------------------------------------------------------------------------------------------------- CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] 6.建表(預設是內部表) create table trade_detail(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t'; 建分割槽表 create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by '\t'; 建外部表 create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t' location '/td_ext'; 7.建立分割槽表 普通表和分割槽表區別:有大量資料增加的需要建分割槽表 create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by '\t'; 分割槽表載入資料 load data local inpath './book.txt' overwrite into table book partition (pubdate='2010-08-22'); load data local inpath '/root/data.am' into table beauty partition (nation="USA"); 8.分桶表 設定: set hive.enforce.buckting=true; set mapred.reduce.tasks=x; order by 會被限制: set hive.mapred.mode=nostrict; create table test_buket(id int ,name string ) clustered by (id) sorted by (id) into 4 buckets row format delimited fields terminated by ','; select nation, avg(size) from beauties group by nation order by avg(size); 新增分割槽:alter table mytest add partition (country='Japan'); 刪除分割槽:alter table mytest drop partition (country='Japan'); 新增列:alter table mytest add columns (age int); 刪除列: 修改列名:alter table mytest change age old_age int; 插入資料:insert overwrite|into table mytest01 select id,name ,null from mytest; 匯出資料:insert overwrite|into local directory '/home/exp.bcp' select sum(id) from mytest; 匯出資料到hdfs:insert overwrite local directory 'hdfs://data134:9000/output-sort' select sum(id) from mytest; select語法: SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list [HAVING condition]] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list] ] [LIMIT number] set mapred.reduce.tasks=xx; set mapred.map.tasks=xx; set -v;#檢視所有配置的引數 SET mapreduce.framework.name=local; 本地模式跑map-reduce 本地執行 mapreduce SET mapreduce.framework.name=local; set mapred.local.dir='/home/tmp'; hive 日誌目錄配置: $HIVE_HOME/conf/hive-log4j.properties hive.log.dir=<other_location> 注:1、order by 會對輸入做全域性排序,因此只有一個reducer,會導致當輸入規模較大時,需要較長的計算時間。 2、sort by不是全域性排序,其在資料進入reducer前完成排序。因此,如果用sort by進行排序,並且設定mapred.reduce.tasks>1,則sort by只保證每個reducer的輸出有序,不保證全域性有序。 3、distribute by根據distribute by指定的內容將資料分到同一個reducer。 4、Cluster by 除了具有Distribute by的功能外,還會對該欄位進行排序。因此,常常認為cluster by = distribute by + sort by hiveserver2連結: 執行hiveserver2 !connect jdbc:hive2://ip:10000 beeline -u jdbc:hive2://ip:10000 -n root 問題: 1. Error: Could not open client transport with JDBC Uri: jdbc:hive2://192.168.249.134:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate mysql 解決方法:在hadoop的core-site.xml中新增如下內容 <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> 經典面試題: data: 訪客 月份 訪問次數 A 2015-01 5 A 2015-01 15 B 2015-01 5 A 2015-01 8 B 2015-01 25 A 2015-01 5 A 2015-02 4 A 2015-02 6 B 2015-02 10 B 2015-02 5 級聯計算累加訪問量: sql: select a.username,a.mouth ,a.gt,sum(b.gt)from (select username,mouth,sum(gt) gt from test group by username,mouth) a , (select username,mouth,sum(gt) gt from test group by username,mouth) b where a.username = b.username and a.mouth>=b.mouth group by a.username,a.mouth order by a.username,a.mouth; 結果: A 2015-01 33 33 A 2015-02 10 43 B 2015-01 30 30 B 2015-02 15 45
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31506529/viewspace-2213713/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 有關AsyncTask的一些隨筆筆記筆記
- vue一些筆記Vue筆記
- npm與yarn的一些筆記NPMYarn筆記
- C語言的一些小筆記C語言筆記
- oracle一些工作筆記Oracle筆記
- 一些老筆記整理筆記
- 學習Python的一些小筆記Python筆記
- 一些概念2(私人筆記)筆記
- 整理一些筆記上傳筆記
- [筆記]一些SQL指令碼筆記SQL指令碼
- 筆記摘要【一些網址】筆記
- 前端面試常問的一些筆記前端面試筆記
- 使用ProComponents和Antd的一些筆記筆記
- Bootstrap的一些筆記——form,button,etc.boot筆記ORM
- 整理的一些oracle備份筆記 (zt)Oracle筆記
- nodejs的TCP相關的一些筆記NodeJSTCP筆記
- ElasticSearch裡面一些小坑筆記Elasticsearch筆記
- CDN快取學習筆記,讀騰訊雲的一些心得和整理筆記快取筆記
- [開發筆記]-分享一些勵志的話筆記
- 學習 Nginx 的一些筆記,命令配置等Nginx筆記
- 用 elixir 刷 LeetCode 的一些筆記LeetCode筆記
- 【筆記】關於大資料的一些想法筆記大資料
- [筆記]關於調整的一些建議筆記
- python異常的一些程式碼筆記Python筆記
- 誤刪了一些學習筆記筆記
- 關於Vue和React區別的一些筆記VueReact筆記
- 關於巨集奕培訓的一些小筆記(三)筆記
- Laravel 我的教程筆記:一些常用命令Laravel筆記
- 日常遇到的一些問題或知識的筆記(二)筆記
- 日常遇到的一些問題或知識的筆記(一)筆記
- 大型資料庫應用——一些筆記資料庫筆記
- 關於SQL資料庫一些簡單的筆記SQL資料庫筆記
- Laravel 我的教程筆記:一些常用命令( git )Laravel筆記Git
- es6,es7的一些語法(筆記)筆記
- 關於PC或筆記本的一些安全設定筆記
- ABAP 內表的一些知識點【學習筆記】筆記
- JavaScript學習筆記 - 值的型別的一些知識點JavaScript筆記型別
- 別人的《演算法圖解》筆記+自己的一些思考演算法圖解筆記