hive数据库操作与sqoop工具的使用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: hive数据库操作与sqoop工具的使用

一、hive数据库操作

1,新建表

基本格式:

create table IF NOT EXISTS test.test_mx
(
 activity_code string COMMENT '活动编码',
 activity_name string COMMENT '活动名称',
 request_url string COMMENT 'client request url',
)
COMMENT 'Test access log'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
location '/user/hadoop/warehouse/test';
STORED AS TEXTFILE ;

参数解释:

1,IF NOT EXISTS:判定表是否存在
2,COMMENT:给字段和表增加注释
3,ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t':定义文件中的每一行之间的分隔符,分隔符可以是其他字符,比如",","#","|"等,一般只要用数据文件中可以区分每一行中的不同数据即可。
4,LOCATION hdfs_path:指定该表映射到到hdfs的文件路径,默认是映射到/user/hive/warehouse目录下。
5,STORED AS TEXTFILE:指定文件的类型,保存在hive中的文件的类型有多种,一般简单就保存为TEXTFILE文本格式,企业中一般不使用这种格式来保存数据,主要是因为文本格式占的空间比较大,不利于大数据分析。企业中一般使用ORC和PARQUET两种文件类型来保存。
5,COLLECTION ITEMS TERMINATED BY '\n':列与列直接的分隔符,通常是以换行符来区分,一般不需要写。

2,插入数据

(1)加载数据

load data local inpath '/home/hadoop/test/test_mx.txt' into table test.test_mx;

(2)insert插入数据

insert into test.test_mx(activity_code ,activity_name,request_url  ) values(6222345,'百度文选','www.baidu.com');

(3)insert--select

insert into test.test_mx
select activity_code,activity_name,request_url
from  test.test_mx_01

3,删除表与删除数据

(1)truncate

truncate table 表名

注意:truncate可删除所有的行,但是不能删除外部表

(2)shell命令

hdfs -dfs -rm -r 外部表路径

注意:shell命令删除外部表

(3)drop

drop table 表名

注意:drop 可删除整个表

二、sqoop工具的使用

1,使用sqoop新建表

sqoop create-hive-table \
--connect jdbc:mysql://IP地址:端口/数据库实例 \
--username 用户名 \
--password 密码 \
--table 数据库表 \
--hive-database hive数据库
--hive-table hive表名

主要参数解释:

create-hive-table :创建表关键字。

2,sqoop数据导入

sqoop import -Dmapreduce.map.memory.mb=6000 -Dmapreduce.map.java.opts=-Xmx1600m -Dmapreduce.task.io.sort.mb=4800 \
--hive-import \
--connect jdbc:mysql://IP地址:端口/数据库实例?dontTrackOpenResources=true\&defaultFetchSize=10000\&useCursorFetch=true \
--driver com.mysql.jdbc.Driver \
--table 表名 \
--username name \
--password password  \
--hive-import \
--hive-database test \
--hive-table MscActivity \
--hive-overwrite -m 1 \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec --null-string '\\N' --null-non-string '\\N'

主要参数解释:

1,import :数据导入关键字
2,connect 数据库连接信息
3,driver 数据库驱动
4,table 数据库表
5,username 数据库用户名
6,password 数据库密码
7,hive-database hive数据库实例
8,hive-table hive数据表
9,hive-overwrite -m 任务个数
10,--null-string '\\N' --null-non-string '\\N'  :sqoop遇到"\N"后按照null进行插入处理

3,sqoop数据导出

示例代码:

sqoop export \
--connect jdbc:mysql://IP地址:端口/数据库实例 \
--username 用户名 \
--password password  \
--table test_mx_0511 \
--export-dir /user/hive/warehouse/test.db/test_mx_0511/ \
--fields-terminated-by '\t' --input-null-string '\\N' --input-null-non-string '\\N'

主要参数解释:

1,export:数据导出关键字
2,export-dir 指定hive表在hdfs上面的路径
3,fields-terminated-by '\t' 指定分隔符

4,常见问题处理

(1)MySQL导入hive时,没有成功,但是文件已经存在

错误信息:Output directory hdfs://node01:8020/user/root/MscActivity already exists
错误描述:如果sqoop导入不成功的时候,每次MR都会生成一个output目录但是不能自动删除,所以我们就把HDFS的输出目录删除:
问题解决:
            hadoop fs -ls -R:查看目录
            hadoop fs -rmr 路径:删除输出目录

(2)数据导入发生错位

数据导入发生错位
错误描述:导入表的数据与源数据不一致,发生数据错位情况
问题解决:查看源数据与目标数据的分隔符与换行符是否一致。

(3)GC overhead limit exceeded

第一种:
错误信息:GC overhead limit exceeded
错误描述:代码的问题,和内存无关,代码中出现了大量占用内存的对象
解决思路:设置mysql的读取数据的方式,不要一次性将所有数据都fetch到内存
实施方案:在配置connect参数的时候加上 ?dontTrackOpenResources=true&defaultFetchSize=10000&useCursorFetch=true
案例:--connect jdbc:mysql://IP地址:3306/数据库实例?dontTrackOpenResources=true\&defaultFetchSize=10000\&useCursorFetch=true

第二种:
错误信息:GC overhead limit exceeded
错误描述:代码的问题,和内存无关,代码中出现了大量占用内存的对象
解决思路:增加mapreduce的内存配置
实施方案:sqoop import -Dmapreduce.map.memory.mb=6000 -Dmapreduce.map.java.opts=-Xmx1600m -Dmapreduce.task.io.sort.mb=4800 \

(4)sqoop数据导出时,格式不符

报错信息:ERROR tool.ExportTool: Error during export: 
        Export job failed!
问题描述:sqoop数据导入时,格式不符
解决方案:检查hive表与MySQL数据表的字段格式是否一致
        加上两条参数–input-null-string和–input-null-non-string,在sqoop遇到"\N"后按照null进行插入处理
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
125 0
|
21天前
|
人工智能 数据库 iOS开发
DBeaver Ultimate Edtion 25.2 发布 - 通用数据库工具
DBeaver Ultimate Edtion 25.2 Multilingual (macOS, Linux, Windows) - 通用数据库工具
167 0
|
3月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
567 0
|
6月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
209 12
|
7月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
459 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
9月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
7月前
|
SQL 分布式计算 数据库
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
|
7月前
|
SQL 关系型数据库 网络安全
Navicat Premium 17 最新版下载与配置:5分钟完成企业级数据库工具部署
Navicat Premium 17 是一款支持多种主流数据库(如 MySQL、Oracle、PostgreSQL 等)的多数据库管理工具,提供可视化数据建模、SQL 编辑和数据同步等功能。试用版提供 14 天全功能体验,商业版支持跨平台使用。安装环境要求 Windows 10/11 或 macOS 12.0+,最低配置为 4GB 内存。下载并解压安装包后,按步骤启动安装程序、接受许可协议、自定义安装路径并完成安装。首次运行时需激活许可证并配置数据库连接。常见问题包括无法写入注册表、试用期续费及连接数据库权限问题。高级功能涵盖 SSH 通道加速、自动化任务调度和性能调优建议。
1813 19
|
6月前
|
SQL Oracle 数据库
这款免费数据库工具,可能是YashanDB图形化管理的最佳选择
DBeaver for YashanDB 是一款专为国产自研数据库 YashanDB 定制的图形化管理工具,基于全球流行的开源数据库工具 DBeaver 二次开发而成。它深度适配 YashanDB 的各种架构,支持 HEAP/LSC 多形态表管理和 Oracle 生态兼容,提供高效的对象管理、智能 SQL 开发和工业级 PL/SQL 调试功能。通过可视化操作,开发者可轻松完成物化视图配置、存储过程管理等复杂任务,大幅提升效率。该工具完全免费,支持多平台,为企业级数据库管理提供了成熟解决方案。
|
8月前
|
关系型数据库 数据库连接 数据库
循序渐进丨MogDB 中 gs_dump 数据库导出工具源码概览
通过这种循序渐进的方式,您可以深入理解 `gs_dump` 的实现,并根据需要进行定制和优化。这不仅有助于提升数据库管理的效率,还能为数据迁移和备份提供可靠的保障。
217 6

热门文章

最新文章