hadoop离线数据分析05
mysql安装
本地安装(略)
在线安装
yum install mysql mysql-server mysql-devel
完成后,用 /etc/init.d/mysqld start 启动mysql
启动mysql控制台:
mysql
mysql>; USE mysql;
mysql>; UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql>; FLUSH PRIVILEGES;
允许远程登录
mysql -u root -p
Enter Password: <your new password>
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
完成后就能远程管理mysql了。
mysql服务名字 service mysqld start
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
卸载mysql
--查看系统之前是否已安装MySQL
rpm -qa | grep mysql
--有的话,卸载
rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
--离线安装mysql rpm
rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-client-5.5.28-1.linux2.6.x86_64.rpm
--启动mysql
service mysql start
--MySQL安全配置向导 mysql_secure_installation
mysql_secure_installation
(注意:删除匿名用户,允许用户远程连接)
登陆mysql
mysql -u root -p
Hive安装和部署
derby 版:(一般不采用)
1、解压 hive 安装包
2、$HIVE_HOME/bin/hive 启动即可使用
3、缺点:多个地方安装 hive 后,每一个 hive 是拥有一套自己的元数据,大家的库、表就不统一;
mysql 版:
1、解压 2、修改配置文件
上传
Snip20171104_25.png
解压至/usr/local/src
配置并编辑vi conf/hive-env.sh
Snip20171104_22.png
Snip20171104_26.png
创建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>
Snip20171104_24.png
Snip20171104_29.png
保存进入bin目录./hive启动hive
Snip20171104_24.png使用hive
Hive中所有的数据都存储在HDFS中,没有专门的数据存储格式(可支持Text, SequenceFile,ParquetFile,RCFILE 等),SequenceFile 是 hadoop 中的一 种文件格式:文件内容是以序列化的 kv 对象来组织的。
只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就 可以解析数据。
Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。 db:在 hdfs 中表现为${hive.metastore.warehouse.dir}目录下一个文件夹 table:在 hdfs 中表现所属 db 目录下一个文件夹
external table:与 table 类似,不过其数据存放位置可以在任意指定路径 partition:在 hdfs 中表现为 table 目录下的子目录
bucket:在 hdfs 中表现为同一个表目录下根据 hash 散列之后的多个文件
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]
Snip20171104_29.png
Snip20171104_30.png
Snip20171104_31.png
Snip20171104_34.png
Snip20171104_35.png
Snip20171104_36.png
ROW FORMAT DELIMITED
[FIELDS TERMINATED BY char]
[COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char]
[LINES TERMINATED BY char] | SERDE serde_name [WITH SERDEPROPERTIES
(property_name=property_value, property_name=property_value,...)]
ROW FORMAT DELIMITED(指定分隔符)
create table day_table (id int, content string) partitioned by (dt string) row format delimited fields terminated by ','; ---指定分隔符创建分区表
复杂类型的数据表指定分隔符
create table complex_array(name string,work_locations array<string>) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',';
数据如下:
zhangsan beijing,shanghai,tianjin,hangzhou
wangwu shanghai,chengdu,wuhan,haerbin
create table t_map(id int,name string,hobby map<string,string>)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':' ;
数据:
1,zhangsan,唱歌:非常喜欢-跳舞:喜欢-游泳:一般般
2,lisi,打游戏:非常喜欢-篮球:不喜欢
远程连接
Snip20171105_40.png Snip20171105_42.png分桶表