sqoop简单操作-从mysql导入导出数据
来源:互联网 发布:java缺省包 编辑:程序博客网 时间:2024/06/01 23:55
一,将本地数据放入hive表中
1,本地数据
本地文件data1.txt中有两列数据,如下:
1 aaa2 bbb3 ccc4 ddd5 eee...
2,在hive中创建表
hive> create table table1 > (id int,name string) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ' ' > STORED AS TEXTFILE;OKTime taken: 0.082 seconds
列与data1.txt中的数据对应,并给出数据分割的字符,在data1.txt中是空格符“ ” 所以FIELDS TERMINATED BY ' '
3,上传文件中的数据到表table1中
hive> load data local inpath 'data1.txt' into table table1;Copying data from file:/home/hadoop/test_data/data1.txtCopying file: file:/home/hadoop/test_data/data1.txtLoading data to table default.table1Table default.table1 stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 131, raw_data_size: 0]OKTime taken: 0.326 seconds
注意:hive本身是不存储数据的,简单一点来说可以把它看做是mapreduce的一个包装,让使用者可以通过简单的方式调用mapreduce来访问hdfs中的数据。事实上它的数据本身还是放在hdfs上的。还记得之前在配置的时候设置了hive在hdfs中的warehouse吗?那就是hive放数据的地方。那就看一下table1的数据位置吧:
hive> dfs -ls /user/hive/warehouse/table1 > ;Found 1 items-rw-r--r-- 1 hadoop supergroup 131 2014-10-20 09:06 /user/hive/warehouse/table1/data1.txt
可以看到实际上它只是把data1.txt放到了自己对应的hdfs的目录下,table1的数据本事还是存储在data1.txt这个文本文件中的。
查询一下table1中的数据:
hive> select * from table1;OK1aaa2bbb3ccc4ddd5eee...Time taken: 0.093 seconds, Fetched: 20 row(s)
data1.txt中的数据也就存在于表table1中了。
二,通过sqoop把hive中的表导出到mysql数据库
1,在mysql中创建表用来存储导入数据
mysql> use hiveReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changed
选择数据库hive
mysql> create table import1 (id int,name varchar(10));Query OK, 0 rows affected (0.07 sec)
创建表import1用来存储数据
2,利用sqoop将hive中的表导出到mysql的表中
sqoop export -connect jdbc:mysql://localhost/hive -username hive -password mysql -table import1 -export-dir /user/hive/warehouse/table1 -input-fields-terminated-by ' '
实际上还是从hdfs中导出文件到mysql,所以还是要给出input-fields-terminated-by ' '
再查看mysql中的表import中的数据:
mysql> select * from import1 -> ;+------+------+| id | name |+------+------+| 17 | qqq || 18 | rrr || 19 | sss || 20 | ttt |...| 14 | nnn || 15 | ooo || 16 | ppp |+------+------+20 rows in set (0.00 sec)可以看到乱序了,这是因为mapreduce的原因...
三,通过sqoop将mysql中的表导入到hive
sqoop import --connect jdbc:mysql://localhost/hive --username hive --password mysql --table import1 --split-by 'id'
这里也要给出split-by参数,sqoop通过这里的参数值来分配mapreduce任务。sqoop会将切分的不同区域的任务分配给不同的map中。每个map再从数据库中一行一行的获取值然后写入到hdfs中。split-by根据不同的参数有不同的切分方法,例如int型,它会选取最大的值和最小的值根据传入的-m参数(默认为1)来确定划分几个区域。默认的split-by参数是要导入的表的主键,如果没有给出参数又没有主键,导入操作就会失败报错。
导入完成之后查看hive中的数据:
hive> select * from import1;OK1aaa2bbb3ccc...19sss20ttt16pppTime taken: 0.293 seconds, Fetched: 20 row(s)
0 0
- sqoop简单操作-从mysql导入导出数据
- sqoop简单操作-从mysql导入导出数据
- sqoop从hbase导出数据到mysql
- SQOOP从HDFS导出数据到MySQL
- sqoop数据导入导出
- Sqoop数据导入导出
- 使用Sqoop从MySQL中导入数据
- Sqoop 数据从HDFS导入到mysql
- SQOOP从MySQL导入数据到HDFS
- SQOOP从MySQL导入数据到Hive
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- Sqoop导出MySQL数据
- 树莓派 安装小记
- swift-字典NSDictionary的定义,修改键值,删除/添加键值
- ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
- Python学习笔记19:服务器基础
- 传智播客DotNet面试题 (原文转载酷小孩博客)
- sqoop简单操作-从mysql导入导出数据
- 微软经典面试题及答案
- nullptr和NULL
- GC安装中出现oracle gc pm state file does not exit opmndat
- Android中webview和js之间的交互
- JOAL学习笔记 第五课 多声源共享缓冲区
- XMGH
- 面试 快排
- 聊聊Hash