Hive,Mysql,Sqoop安装使用数据导入导出

Hive简介

  • Facebook开发构建与Hadoop之上的数据仓库,可以结构化数据文件映射为一张数据库表
  • 提供完整的SQL查询功能,将SQL语句转换为MapReduce任务进行
  • 适合静态数据分析,数据变化不频繁
  • 不支持记录级别的更新插入或者删除,不支持事务
  • 提供ETL数据提取转化加载,可以维护海量数据,对数据挖掘后形成任意报告表单
  • Hive SQL 和 Mysql 更接近
  • 分区表 按照分区条件在表目录下将数据文件分类归档,目录名是partition条件

Hive安装

1.解压安装包
2.设置环境变量
3.修改hive-site.xml配置文件
4.将mysql连接包放入hive安装路径下的lib包  /usr/local/hive/lib
5.启动hive

mysql安装

1.更新软件源
2.安装mysql
3.修改编码 character_set_server
4.给hive用户赋权限(hive 能接入数据库)

hive内部表和外部表的区别


Hive安装

1.解压安装包

下载安装包可能会用到的镜像
http://mirror.bit.edu.cn/apache/hive/ 
http://mirrors.hust.edu.cn/apache/hive/ 
http://mirrors.shu.edu.cn/apache/hive/ 
http://mirrors.tuna.tsinghua.edu.cn/apache/hive/

tar -zxvf apache-hive-1.2.2-bin.tar.gz -C /usr/local/
hadoop@dhjvirtualmachine:/usr/local$ sudo mv apache-hive-1.2.2-bin/ hive
sudo chown -R hadoop:hadoop hive

2.设置环境变量

编辑~/.bashrc文件
vim ~/.bashrc
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

vim ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

source ~/.bashrc

3.修改hive-site.xml配置文件

cd /usr/local/hive/conf
vi hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

5.启动hive

先启动Hadoop和mysql
启动Hadoop
start-all.sh
启动hive
hive  

mysql安装

  1. 更改apt-get 源
sudo apt-get update  #更新软件源
关闭Ubuntu的软件和更新中的所有源

删除/var/lib/apt/lists 所有文件 
```
rm -rf /var/lib/apt/lists/*
```
修改/etc/apt/sources.list
(注意版本匹配:16.1->yakkety;16.04->xenial;15.10->willy;14.04->trusty;12.04->precise)
```
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
```

2.安装mysql

sudo apt-get install mysql-server  #安装mysql

3.修改编码 character_set_server

启动mysql
service mysql start

检查
sudo netstat -tap | grep mysql

进入mysql shell界面
mysql -u root -p

show variables like "char%"

character_set_server默认为latin1

修改配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下添加一行character_set_server=utf8

重启mysql
service mysql restart

进入mysql shell界面
mysql -u root -p

检查character_set_server变量
show variables like "char%"

4.给hive用户赋权限(hive 能接入数据库)

进入mysql shell界面
mysql -u root -p

创建于hive对接数据库
create database hive;

给hive用户赋权限
grant all on *.* to hive@localhost identified by 'hive';

刷新mysq系统权限关系表
flush privileges; 

hive内部表和外部表的区别

1.创建内部表

create table if not exists hive.usr(
      name string comment 'username',
      pwd string comment 'password',
      address struct<street:string,city:string,state:string,zip:int>,
      comment  'home address',
      identify map<int,tinyint> comment 'number,sex') 
      comment 'description of the table'  
     tblproperties('creator'='me','time'='2016.1.1'); 

2.创建外部表

create external table if not exists usr2(
      name string,
      pwd string,
  address struct<street:string,city:string,state:string,zip:int>,
      identify map<int,tinyint>) 
      row format delimited fields terminated by ','
     location '/usr/local/hive/warehouse/hive.db/usr'; 

区别

当执行加载数据到表后
load data local inpath '/home/duhj/data/duhj.txt' into table usr;

duhj.text会被加载到HDFS分布式文件系统中,hive将hdfs数据放入表中,表的数据放在配置文指定的路径(hive-site.xml配置文件的hive.metastore.warehouse.dir属性)

当删除这张内部表的时候,会将表的元数据清除,而外部表在创建的时候location 指定了表数据存放位置(表数据不由hive管理),并不会删除该位置下的数据。

数据管理:内部表由hive管理,删表 hdf上数据也删
          外部表由Hadoop管理,删表  hdf 数据还在
对表修改: 内部表 同步元数据
           外部表 需要修复  MSCK REPAIR TABLE tablename;

数据导入导出 Sqoop

hive 导入mysql

bin/sqoop export
    --connect jdbc:mysql://localhost:3306/database
    --username root
    --password root
    --table    user_log
    --export_dir '/user/hive/warehouse/somedb.db/inner_user_log'
    --fields-interminated-by ','
    
注:
string -> vchar

mysql导出hive

bin/sqoop export
    --connect jdbc:mysql://localhost:3306/database
    --username root
    --password root
    --query 'select id,name,age from user_log'
    --target-dir /user/hive/warehouse/user_log
    --delete-target-dir
    --num-mappers
    --compress
    --compression-code org.apache.hadoop.io.compress.snappycodec
    --fields-termied-by '\t'

hive 再将/user/hive/warehouse/user_log 加载到表中
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sqoop是一款用于在Hadoop与关系型数据库之间进行数据传输的工具,可以方便地将数据从关系型数据导入到Hadoop中,也可以将Hadoop中的数据导出到关系型数据库中。下面分别介绍Sqoop导入导出功能: 1. Sqoop数据导入 Sqoop数据导入功能可以将关系型数据库中的数据导入到Hadoop中进行处理和分析。以下是导入数据的步骤: (1)执行以下命令安装Sqoop: ``` sudo apt-get update sudo apt-get install sqoop ``` (2)使用以下命令进行数据导入,其中jdbc-url和username、password分别为数据库的连接地址、用户名和密码,table为需要导入的表名,target-dir为数据导入的目录: ``` sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table student --target-dir /user/hadoop/student ``` 2. Sqoop数据导出 Sqoop数据导出功能可以将Hadoop中的数据导出到关系型数据库中进行存储和处理。以下是导出数据的步骤: (1)执行以下命令进行数据导出,其中jdbc-url和username、password分别为数据库的连接地址、用户名和密码,table为需要导出的表名,export-dir为数据导出的目录: ``` sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table student --export-dir /user/hadoop/student ``` Hive是一种数据仓库工具,可以用于对大规模数据进行处理和分析。Hive可以将结构化的数据映射为一张数据库表,并提供类SQL查询语言对数据进行查询和分析。以下是使用Hive进行数据处理和分析的步骤: (1)启动Hive 在终端中执行以下命令启动Hive: ``` hive ``` (2)创建表 使用Hive的SQL语法创建一个表,例如: ```sql CREATE TABLE student ( id INT, name STRING, age INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; ``` (3)导入数据 使用Hive的LOAD DATA语法将数据导入到表中,例如: ```sql LOAD DATA LOCAL INPATH '/home/hadoop/student.txt' INTO TABLE student; ``` (4)查询数据 使用Hive的SELECT语法查询表中的数据,例如: ```sql SELECT * FROM student WHERE age > 18; ``` (5)保存查询结果 使用Hive的INSERT语法将查询结果保存到另一个表中,例如: ```sql INSERT INTO student2 SELECT * FROM student WHERE age > 18; ``` 以上是使用Sqoop进行数据导入导出使用Hive进行数据处理和分析的基本步骤,具体的操作可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值