Hive数据库 *** 作

Hive数据库 *** 作,第1张

Hive数据库 *** 作 Hive数据库 *** 作 1、对数据库进行 *** 作 (1)创建数据库
create database chengzhi;

如果出现如下错误:

hive> create database db_hive;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
Database db_hive already exiSts

使用命令:(避免要创建的数据库已经存在错误,增加 if not exists 判断。)

hive (default)> create database if not exists db_hive;
(2)切换数据库以及删除数据库
use chengzhi;
drop database db_hive2;
(3)创建表
create table st(
id String,
name String,
score integer)
row format delimited fields terminated by ',';
(4)修改表中的机构以及表记录

修改表表名,列名,列注释,表注释,增加列,调整列顺序,属性名等 *** 作

ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
(5)将表记录导入到数据表中去
load data inpath '/data/user.txt' into table student;
#上传文件从本地上传
load data local inpath '/data/user.txt' into table stu;

出现的错误:

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHivemetaStoreClient

说明数据库内容有问题:

我的原因是应为修改了名称,导致数据库出错。

查看并修改vi hive-site.xml内容。

使用Sqoop工具导入导出 1、Sqoop安装配置 (1)设置sqoop-env.sh文件,添加如下配置内容:
export HADOOP_COMMON_HOME=/usr/app/hadoop2.7.3
export HADOOP_MAPRED_HOME=/usr/app/hadoop2.7.3
export HADOOP_HIVE_HOME=/usr/app/hive2.3.7
(2)设置系统环境变量:
export SQOOP_HOME=/usr/app/sqoop1.4.7
export PATH=$PATH:$SQOOP_HOME/bin
(3)sqoop-site.xml保持默认配置 (4)将MySQL的包文件导入到/usr/app/sqoop1.4.7/lib下面mysql-connector-java-5.1.7-bin.jar (6)测试是否链接数据库:
sqoop list-databases 
 --connect jdbc:mysql://192.168.87.202/ 
 --username root 
 --password 123456 
2、上传文件方法 (1)全量导入
sqoop import 
 --connect jdbc:mysql://192.168.1.2/cqcvc 
 --username root 
 --password 123456 
 --target-dir /mydata 
 --table student 
--num-mappers 1
(2)增量导入
sqoop import 
 --connect jdbc:mysql://192.168.1.2/cqcvc 
 --username root 
 --password 123456 
 --target-dir /mydata 
 --table student 
 --incremental append 
 --check-column id 
 --last-value 5
(3)带where参数的数据过滤导入
sqoop import 
 --connect jdbc:mysql://192.168.1.2/cqcvc 
 --username root 
 --password 123456 
 --where "sex='女'" 
 --target-dir /mydata1 
 --table student 
 --num-mappers 1

(4)通过query参数的数据过滤导入

 sqoop import --connect jdbc:mysql://192.168.1.2/cqcvc --username root 
 --password 123456 
 --target-dir /mydata4 
 --query 'select * from student where id>2 and $CONDITIONS' 
 --num-mappers 1

(5)数据导出export

sqoop export
--connect jdbc:mysql://192.168.87.202/chengzhi?characterEncoding=utf8 
--username root 
--password 123456 
--table money 
--export-dir /Hive_WH/chengzhi.db/money1
课堂实例

1、先将要分析的数据表consumption.log上传到Hadoop的/data文件下。

2、在hive上新建一个

create table money(
id int,
name String,
Time String,
product String,
money int,
city1 String,
city2 String,
Telephone String)
row format delimited fields terminated by ' ';

2、从本地上传到hive上

load data local inpath '/data/user.txt' into table money;

3、将需要查找的数据查询到然后保存到hive的数据表中去,并且以逗号作为分隔符

create table money1
row format delimited fields terminated by ',' 
as select name,sum(money) as sum 
from consumption1 group by name order by sum;

6、在MySQL数据库中创建一个和需要导出表的表结构相同的数据表

CREATE TABLE money(name varchar(30),sum int(10));

5、将数据保存好后退出hive然后使用sqoop将数据导出MySQL中

sqoop export 
--connect jdbc:mysql://192.168.87.202/chengzhi?characterEncoding=utf8 
--username root 
--password 123456 
--table money 
--export-dir /Hive_WH/chengzhi.db/money1

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5706349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存