码迷,mamicode.com
首页 > 数据库 > 详细

hive、sqoop、MySQL间的数据传递

时间:2018-08-12 20:15:11      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:import   cat   用户访问   war   传递   加载   div   特点   append   

hdfs到MySQL

csv/txt文件到hdfs

MySQL到hdfs

 hive与hdfs的映射:

drop table if exists emp;
create table emp ( id
int comment ID, emp_name string comment 姓名, job string ) comment 职业 row format delimited -- stored as rcfile location /user/hive/warehouse/emp;

stored as 关键词,hive目前支持三种方式:
1:就是最普通的textfile,数据不做压缩,磁盘开销大,解析开销也大
2:SquenceFIle,hadoop api提供的一种二进制API方式,其具有使用方便、可分割、可压缩等特点。
3:rcfile行列存储结合的方式,它会首先将数据进行分块,保证同一个record在一个分块上,避免读一次记录需要读多个块。其次块数据列式存储,便于数据存储和快速的列存取。
RCFILE由于采用是的列式存储,所以加载时候开销较大,但具有很好的查询响应、较好的压缩比。
如果建立的表需要加上分区,则语句如下:
这里partitioned by 表示按什么字段进行分割,通常来说是按时间

 

Hadoop指令查看hdfs下的数据

 

将本地数据文件导入到hdfs下面:

比较利用Hadoop指令将数据上传至hdfs路径

create external table if not exists emp(
id int comment 用户名,
name string comment 月份,
job string comment 访问次数
) comment 用户访问表 
row format delimited fields terminated by "\t" 
location "/user/hive/warehouse/test.db";
-- 方法1. 将文件直接上传至hdfs
hadoop dfs -put /root/part-m-00000 /user/hive/warehouse/test.db
-- 方法2. 通过hive 的 load方法将数据传至hdfs
load data local inpath "/root/part-m-00000" into table test.emp;

以上两种方法实现的效果相同;注意一点就是 数据间的 间隔符号  “\t”

方法3. 利用sqoop将数据传至hdfs  <sqoop是MySQL与hdfs之间数据传递工具>

sqoop import --connect jdbc:mysql://192.168.5.129:3306/hadoop --username root --password 111111 --table emp_demo --fields-terminated-by ‘\t‘ -m 1 --target-dir /user/hive/warehouse/test.db
 sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table person --append --target-dir /user/hive/warehouse/test.db

将hdfs数据保存到MySQL

 sqoop export --connect jdbc:mysql://localhost/db --username root --table employee --export-dir /emp/emp_data

 

hive、sqoop、MySQL间的数据传递

标签:import   cat   用户访问   war   传递   加载   div   特点   append   

原文地址:https://www.cnblogs.com/iloverain/p/9462011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!