日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop系列四:Hadoop之Hive篇

發布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop系列四:Hadoop之Hive篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hive安裝和運行

Pig與RDBMS、Hive比較

Pig Latin是一種數據流編程語言,而SQL是一種描述性編程語言。換句話說,Pig程序是相對于輸入的一步步操作,其中每一步是對數據的一個簡答的變換。相反,SQL語句是一個約束的集合,這些約束的集合在一起,定義了輸出。

Hive介于Pig和傳統RDBMS(關系數據庫管理系統Relational DatabaseManagement System)之間,Hive的設計目的是讓精通SQL既能的分析師能夠在存放在HDFS的大規模數據集上運行查詢。Hive在很多方面和傳統數據庫類似,但是它底層對HDFS和MapReduce的依賴意味著它的體系結構有別于傳統數據庫。

Hive本身不存儲數據,完全依賴于HDFS和MapReduce,Hive可以將結構化的數據文件映射為一張數據庫表,Hive中表純邏輯,就是表的元數據。而HBase是物理表,定位是NoSQL。

Ubuntu操作系統,主機名hp,已部署Hadoop單節點偽分布,集成mysql作為元數據庫。Hive默認的安裝方式是Apache Derby,將元數據存儲在Derby數據庫中。Derby是一個完全用java編寫的數據庫,可跨平臺在JVM中運行。

1)mysql安裝

$sudo apt-get installmysql-server

登錄mysql:$mysql -u root -p?

建立數據庫hive:mysql>create?database?hive;

??????????????? mysql>show databases;//查看創建;

創建hive用戶,并授權:mysql>grant?all?on?hive.*?to?hive@'%'??identified?by?'hive';?

mysql>flush?privileges;?

???? 查詢mysql的版本:mysql>select version();//這里是5.6.28

下載mysql的JDBC驅動包:

http://dev.mysql.com/downloads/connector/j/

下載mysql-connector-java-5.1.38.tar.gz

復制msyql的JDBC驅動包到Hive的lib目錄下。

2)Hive安裝

官網http://hive.apache.org/下載apache-hive-2.0.0-bin.tar.gz并解壓在home/hp路徑下。

環境配置

$sudo gedit/etc/profile

添加如下:

#Hive

exportHIVE_HOME=/home/hp/hive

exportPATH=$PATH:${HIVE_HOME}/bin

exportCLASSPATH=$CLASSPATH.:{HIVE_HOME}/lib

3)配置hive-env.sh文件

復制hive-env.sh.template,修改hive-env.sh文件

指定HADOOP_HOME及HIVE_CONF_DIR的路徑如下:?

HADOOP_HOME=/home/hp/hadoop?

export HIVE_CONF_DIR=/home/hp/hive/conf

4)配置hive-site.xml文件

#sudo gedit/home/hp/conf/hive-site.xml?//hive-site.xml新建

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<configuration>

<property>?

???<name>javax.jdo.option.ConnectionURL</name>?

???<value>jdbc:mysql://localhost:3306/hive</value>?

</property>?

<property>?

???<name>javax.jdo.option.ConnectionDriverName</name>?

???<value>com.mysql.jdbc.Driver</value>?

</property>

<property>?

???<name>javax.jdo.option.ConnectionUserName</name>?

???<value>hive</value>?

</property>?

<property>?

???<name>javax.jdo.option.ConnectionPassword</name>?

???<value>hive</value>?

</property>?

</configuration>

<property>

? <name>hive.metastore.local</name>

? <value>true</value>

? <description></description>

</property>

5)運行hive

這里Hivemetastore(元數據存儲)采用Local方式,非remote方式。

第一次需執行初始化命令$schematool-dbType mysql –initSchema

查看初始化后信息$ schematool -dbTypemysql –info

啟動Hadoop服務:$sbin/start-dfs.sh和$sbin/start-yarn.sh

執行$hive

hive>show tables;

6)驗證配置

Hive新建表:

hive>hive> CREATETABLE xp(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

mysql中查看元數據信息

$mysql –u hive –p

mysql>showtables; //顯示 hive 數據庫中的數據表

mysql> select* from TBLS;//查看 hive 的元數據信息

Hadoop中查看生成的文件

$hadoop fs –ls/user/hive/warehouse/??? //可以看到xp目錄。

7)應用案例

?? 場景:統計每日用戶登陸總數。

每分鐘的原始日志內容如下:http://www.blue.com/uid=xxxxxx&ip=xxxxxx

假設只有兩個字段,uid和ip,其中uid是用戶的uid,是用戶的唯一標識,ip是用戶的登陸ip,每日的記錄行數是10億,要統計出一天用戶登陸的總數。

?? Hive建表

hive>CREATE TABLElogin (uid? STRING, ip? STRING)

PARTITIONEDBY (dt STRING)

ROW FORMATDELIMITED

FIELDSTERMINATED BY ','

STORED ASTEXTFILE;

表名是login,字段之間以,隔開,存儲是TEXT,其次還以dt這個字段作為分區。創建成功之后,在hdfs上新建了/user/hive/warehouse/login目錄。

?? 格式化原始日志

將每天的每分鐘的原始日志,轉換成以下文件格式

123,17.6.2.6

112,11.3.6.2

………..

?根據文件大小,合并文件,例如合并為24個文件。

?? 數據入庫到hive

hive>LOADDATA LOCAL? INPATH'/data/login/20120713/*' OVERWRITE INTO TABLE login PARTITION (dt='20120713');

執行成功,轉換過的文件會上傳到hdfs的/user/hive/warehouse/login/dt=20120713目錄里。

?? 在hive上統計分析

hive>selectcount(distinct uid) from login where dt=’20120713’;

使用dt這個分區條件查詢,就可以避免hive去查詢其他分區的文件,減少IO操作,這個是hive分區很重要的特性,也是以天為單位,作為login表分區的重要意義。

執行完畢后,就可以在命令里出現結果,一般通過管道執行hive shell命令,讀取管道的內容,把結果入庫到mysql里就完成分析。

???? 該案例通過網上復制而來,作為理解hive的應用流程來理解。整個hive過程主要:Hive建表-Hive上傳文件到hdfs-Hive基于Hadoop執行統計分析-Hive輸出結果。這個案例比較清晰地理解了Hive的價值。 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Hadoop系列四:Hadoop之Hive篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。