1、使用CDH版本大數(shù)據(jù)組件可以避免在編程中遇到的jar包沖突等問題,下載地址:
http://archive.cloudera.com/cdh5/cdh/5/
2、Hive官方地址慨默,https://hive.apache.org/
3玫芦、Hive簡介:The Apache Hive是使用sql對分布式大數(shù)據(jù)集進(jìn)行讀寫和管理操作的數(shù)據(jù)倉庫慎王,可以使用JDBC對結(jié)構(gòu)化數(shù)據(jù)(MySQL\Oracle等)進(jìn)行操作蚓土。使用sql語法來代替復(fù)雜的MapReduce獲取結(jié)果數(shù)據(jù)的編碼,且基于MapReduce進(jìn)行底層計算赖淤。
4蜀漆、相關(guān)概念
? ? ?離線數(shù)據(jù)倉庫:對數(shù)據(jù)進(jìn)行定時批量處理計算,數(shù)據(jù)巨大咱旱、確定确丢、保存時間長,可用來計算模型吐限,如Spark SQL鲜侥、HDFS+MapReduce+Hive(Hive存儲最終的計算結(jié)果)。
? ? ?實(shí)時數(shù)據(jù)倉庫:對數(shù)據(jù)進(jìn)行實(shí)時的一條一條的計算處理诸典,如Spark Streaming描函、Flink
? ? ?結(jié)構(gòu)化數(shù)據(jù):如Oracle\MySQL,每行一個實(shí)體,按建表定義每行有固定的順序和屬性狐粱,便于增刪改查舀寓。
? ? 半結(jié)構(gòu)化數(shù)據(jù):有一定的結(jié)構(gòu)和屬性,但是結(jié)構(gòu)順序不一定固定脑奠,屬性也不一定要完整基公,如XML、Json文件宋欺。
? ?非結(jié)構(gòu)化數(shù)據(jù):沒有固定的結(jié)構(gòu)和屬性,如文本文件胰伍、圖片齿诞、視頻等。
5骂租、編譯
$ tar -zxvf?hive-1.1.0-cdh5.7.0-src.tar.gz
$ cd?hive-1.1.0-cdh5.7.0
$ mvn clean package -P sources,hadoop-2 -DskipTests -Dtar ? #-P來源于pom文件中的<profile>中的<Id>屬性
6祷杈、安裝配置
Hive默認(rèn)數(shù)據(jù)庫為Derby,此處使用MySQL渗饮,準(zhǔn)備MySQL5.1.7驅(qū)動包但汞,將驅(qū)動包拷貝到
/home/hadoop/app/hive-1.1.0-cdh5.7.0/lib目錄下。
$ cd?/home/hadoop/app/hive-1.1.0-cdh5.7.0/conf
$ cp hive-env.sh.template hive-env.sh ? ? ? ?#該文件為配置Hive和Hadoop環(huán)境變量的配置文件互站,如果在.bash_profile文件中配置了的話私蕾,可以不配置
$ vi hive-site.xml ? ? ? ?#配置連接Mysql,圖中紅色部分為IP地址
修改windows下hosts文件 :C:\Windows\System32\drivers\etc ?hosts中添加?
192.168.1.x hostname,其次要確保上圖紅線中的IP地址在mysql.user表中與對應(yīng)的用戶存在胡桃,否則hive無權(quán)限連接踩叭。
$ cd $HIVE_HOME
$ ./hive ? ?#出現(xiàn)下圖則連接成功
新建的表ruozedata_basic03在Mysql中,
# su - mysql
$ mysql -uroot -p123456
>show databases;
7、在hive中建表報錯com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
解決辦法:在mysql中容贝,alter database dbname character set latin1;
若庫中已經(jīng)有表自脯,則修改已建表的字符集?alter table tablename convert to character set latin1;
查看mysql字符集 ?show variables?like?'character_set_database';