通过sqoop将mysql数据导入到hive中进行计算示例-阿里云开发者社区

开发者社区> 程序猿v> 正文

通过sqoop将mysql数据导入到hive中进行计算示例

简介: 通过sqoop将mysql数据导入到hive中进行计算示例
+关注继续查看

20181214135852317.png

hive计算示例

先将数据通过sqoop从mysql导入hive,在hive执行mysql的查询语句,得到与mysql一样的执行结果

步骤:

  1. mysql数据准备
  • account账号表
  • detail收支数据表
CREATE TABLE `account` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `account` varchar(20),
  `name` varchar(5),
  `age` int(3)
);

insert into account(account, name, age) values("tom@qq.com", "Tom", 23);
insert into account(account, name, age) values("jack@qq.com", "Jack", 20);
insert into account(account, name, age) values("jone@qq.com", "Jone", 22);
insert into account(account, name, age) values("jimi@qq.com", "Jimi", 25);
insert into account(account, name, age) values("black@qq.com", "Black", 24);
select * from account;



CREATE TABLE `detail` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `account` varchar(20),
  `income` double,
  `expenses` double,
  `time` varchar(10)
);

insert into detail(account, income, expenses, time) values("tom@qq.com", 10, 20, 2018-12-1);
insert into detail(account, income, expenses, time) values("jack@qq.com", 10, 30, 2018-12-4);
insert into detail(account, income, expenses, time) values("jone@qq.com", 13, 22, 2018-12-3);
insert into detail(account, income, expenses, time) values("jimi@qq.com", 45, 25, 2018-12-2);
insert into detail(account, income, expenses, time) values("black@qq.com", 34, 24, 2018-12-1);
insert into detail(account, income, expenses, time) values("tom@qq.com", 50, 20, 2018-12-1);
select * from detail;
  1. 创建hive表
create table account (
    id int, 
    account string, 
    name string, 
    age int
) row format delimited fields terminated by '\t';

create table detail (
    id int, 
    account string, 
    income double, 
    expenses double, 
    time string
) row format delimited fields terminated by '\t';
  1. 通过sqoop将mysq当中的数据直接导入到hive当中
sqoop import 
--connect jdbc:mysql://localhost:3306/mydata 
--username root 
--password 123456 
--table account 
--hive-import 
--hive-overwrite 
--hive-table account 
--fields-terminated-by '\t'

sqoop import --connect jdbc:mysql://localhost:3306/mydata --username root --password 123456 --table detail --hive-import --hive-overwrite --hive-table detail --fields-terminated-by '\t'
  1. 计算结果,mysql和hive中计算结果一致
select a.account, a.name, d.total 
from account as a 
join(
    select account, sum(income - expenses) as total 
    from detail group by account
) as d 
on a.account=d.account;

mysql计算结果

+--------------+-------+-------+
| account      | name  | total |
+--------------+-------+-------+
| black@qq.com | Black |    10 |
| jack@qq.com  | Jack  |   -20 |
| jimi@qq.com  | Jimi  |    20 |
| jone@qq.com  | Jone  |    -9 |
| tom@qq.com   | Tom   |    20 |
+--------------+-------+-------+

hive计算结果

black@qq.com    Black   10.0
jack@qq.com Jack    -20.0
jimi@qq.com Jimi    20.0
jone@qq.com Jone    -9.0
tom@qq.com  Tom  20.0

报错及解决

报错:

/tmp/hive on HDFS should be writable.

解决

> hadoop fs -chmod -R 777 /tmp

参考

hive启动出现权限错误 /tmp/hive on HDFS should be writable.

报错:

Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR

解决:

往/etc/profile最后加入

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*

然后刷新配置,source /etc/profile

参考:

ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Hadoop - 企业级大数据管理平台CDH(HA高可用和Sqoop1)
在使用大数据集群的时候容灾是一件很重要的事情,CM可以非常方便的进行HA配置,CM也支持sqoop1和sqoop2,之前已经配置了sqoop2本节来一起配置sqoop1
161 0
PostgreSQL 通过SQL接口关闭、重启数据库
PostgreSQL 通过SQL接口关闭、重启数据库
1176 0
关于hive数据导入方式的总结
从本地导入数据到hive: load data local inpath '/home/hive/tb_dw_cu_three_type_list_dtal/*.dat' overwrite into table csap.tb_dw_cu_three_type_list_dtal  partition(statis_date=20160121); 从HDFS直接导入数据到hive:
1979 0
通过SQL Server 2008数据库复制实现数据库同步备份
原文 通过SQL Server 2008数据库复制实现数据库同步备份 SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。
1498 0
hive数据导入云hbase
网络环境 专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境 公有云虚拟机VPC环境:选择和hbase通VPC 其他:需要开hbase公网 注意:默认导入hbase数据,依赖的hbase-common、hbase-client、hbase-server、hbase-protocol使用社区的包即可。
5108 0
通过DBCC整理Sqlserver数据库表索引碎片
昨天检查了一张效率极慢的表,两年多没有维护,逻辑扫描碎片高达99.81%,于是开始对这个表进行重点跟踪和记录日志。今天用DBCC SHOWCONTIG WITH TABLERESULTS 命令检查了一下所有表的概况,然后参照着MSDN对字段的说明,发现问题比较严重。
948 0
mysql导入导出数据
从文档中导入到数据库 load data local infile '/tmp/test.txt'  into table db.new  fields terminated by ':'                         //列的分割符  lines terminated by '\n';                      //行的分割符 load d
1089 0
将.csv数据导入到mysql中
1.首先看一下我需要导入的数据: 用excel打开的时候显示: 用notepad++打开显示为: 2.使用notepad++打开改变字符集为UTF-8 3,建立表,表中的字段要和文件中的一致       3.
982 0
+关注
1569
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载