今天学习过程和小结
学习了hive中的数据类型以及hive的简单查询,
学习了sqoop version用sqoop导入导出数据。
主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
配置参数
export HADOOP_COMMON_HOME=$HADDOP_HOME
export HADDOP_MAPRED_HOME=$HADDOP_HOME
Hive表结构中的数据类型与MySQL对应列有如下关系:
MySQL(bigint) --> Hive(bigint)
MySQL(tinyint) --> Hive(tinyint)
MySQL(int) --> Hive(int)
MySQL(double) --> Hive(double)
MySQL(bit) --> Hive(boolean)
MySQL(varchar) --> Hive(string)
MySQL(decimal) --> Hive(double)
MySQL(date/timestamp) --> Hive(string)
1,使用sqoop导入mysql数据到hdfs
./sqoop import --connect jdbc:mysql://192.168.122.141/scott --username root --P --table emp -m 1 --target-dir /sqoop/emp;
2,使用sqoop导入mysql数据到hive
./sqoop import --hive-import --connect jdbc:mysql://192.168.122.141:3306/scott --username root --P --table emp;
3,使用sqoop导入mysql数据到hive中,并指定表名
./sqoop import --hive-import --connect jdbc:mysql://192.168.122.141:3306/scott --username root --P --table emp --hive-table emp1;
4,使用sqoop导入mysql数据到hive中,并使用where条件
./sqoop import --hive-import --connect jdbc:mysql://192.168.122.141:3306/scott --username root --P --table emp --hive-table emp2 --where ‘deptno=10’;
5,使用sqoop导入mysql数据到hive中,并使用查询语句
./sqoop import --hive-import --connect jdbc:mysql://192.168.122.141:3306/scott --username root --P --query ‘select * from emp where sal<2000 and $CONDITIONS’ --split by empno --target-dir ‘/sqoop/emp3’ --hive-table emp4;
6,使用sqoop将hive中的数据导出到mysql中
./sqoop export --connect jdbc:mysql://192.168.122.141:3306/data --username root --P --table data --export-dir=’/var/lib/mysql/data/ ‘--input-fields-terminated-by '\t';
也开始做网站日志分析的项目。
一开始先进行数据清洗。
通过map将有用的需要的数据挑选出来。然后将挑选出来的数据放入hive中。
遇到问题汇总
- sqoop中导入导出数据很实用,要多加练习。
- 对于要进行的项目要通过软件架构等的步骤来完成。清洗数据要精确也要掌握好key的值。
3.在清洗出的数据存入hive中要注意字段的值。
学习技能思维导图