Sqoop和Hive数据仓库速查笔记

Sqoop和Hive数据仓库笔记

Sqoop常用命令

基本操作命令

命令 说明
import 将关系型数据库数据导入到HDFS、HIVE、HBASE
export 将HDFS上的数据导出到关系型数据库
codegen 获取数据库中某张表数据生成java并打成jar包
create-hive-table 创建hive表
eval 查询SQL的执行结果
list-databases 列出所有数据库
list-tables 列出某个数据库下的所有表
help 打印sqoop帮助信息
version 打印sqoop版本信息

连接参数

参数 描述
--connect 指定JDBC连接字符串
--connection-manager 指定要使用的连接管理器类
--driver 指定要使用的JDBC驱动类
--hadoop-mapred-home 指定$HADOOP_MAPRED_HOME路径
--password-file 设置密码文件路径
-P 从控制台读取密码
--username 设置认证用户名
--verbose 打印运行信息

常用操作示例

数据库操作

查看所有数据库:

复制代码
sqoop list-databases --connect jdbc:mysql://localhost:3306 --username root --password 123456

查看表列表:

复制代码
sqoop list-tables --connect jdbc:mysql://localhost:3306/hive_meta --username root --password 123456

数据导入

全量导入到HDFS:

复制代码
sqoop import --connect jdbc:mysql://master:3306/onlinedb --username root --password 123456 \
--delete-target-dir --target-dir /sqooptest --table goods --m 1

带分隔符导入:

复制代码
sqoop import --connect jdbc:mysql://master:3306/onlinedb --username root --password 123456 \
--delete-target-dir --target-dir /sqooptest --table goods --fields-terminated-by '\t'

Hive集成

创建Hive表并导入:

bash 复制代码
sqoop create-hive-table --connect jdbc:mysql://master:3306/onlinedb --table goods \
--username root --password 123456 --hive-table default.test

sqoop import --connect jdbc:mysql://master:3306/onlinedb --table goods --username root \
--password 123456 --hive-import --hive-table default.test

Hive配置与使用

Hiveserver2配置

初始化元数据库:

bash 复制代码
schematool -initSchema -dbType mysql

启动服务:

bash 复制代码
hiveserver2 &
beeline -u jdbc:hive2://master:10000 -n root

表类型对比

类型 特点 存储位置
内部表 删除表时同时删除数据 hive.metastore.warehouse.dir
外部表 删除表保留数据 用户自定义路径
分区表 按分区字段存储数据 分区目录结构
分桶表 数据分桶存储 分桶文件

表创建语法

sql 复制代码
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT], ...)]
[PARTITIONED BY (col_name data_type, ...)]
[CLUSTERED BY (col_name) INTO num_buckets BUCKETS]
[ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n']
[STORED AS file_format]
[LOCATION 'hdfs_path']

数据操作

动态分区配置:

sql 复制代码
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

INSERT OVERWRITE TABLE student_dyna PARTITION(age)
SELECT * FROM student;

JSON数据处理:

sql 复制代码
SELECT GET_JSON_OBJECT('{"level":"2"}', '$.level') AS level

数据导出

Hive到本地/HDFS:

sql 复制代码
INSERT OVERWRITE [LOCAL] DIRECTORY '/root/output'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT * FROM goods;

命令行执行:

bash 复制代码
hive -e "SELECT * FROM table"
hive -f /path/to/query.hql

增量导入

追加模式示例:

bash 复制代码
sqoop import --connect jdbc:mysql://master:3306/onlinedb --username root --password 123456 \
--table goods --target-dir /appenresult --incremental append --check-column gid --last-value 1205
相关推荐
百度Geek说7 小时前
搜索数据建设系列之数据架构重构
数据仓库·重构·架构·spark·dubbo
王小王-12311 小时前
基于Hadoop的餐饮大数据分析系统的设计与实现
hive·hadoop·flask·sqoop·pyecharts·hadoop餐饮大数据分析·hadoop美食数据分析
A5资源网10 天前
为WordPress 网站创建一个纯文本网站地图(Sitemap)
前端·数据仓库·html·php
Cachel wood10 天前
Spark教程1:Spark基础介绍
大数据·数据库·数据仓库·分布式·计算机网络·spark
張萠飛10 天前
hive集群优化和治理常见的问题答案
数据仓库·hive·hadoop
isNotNullX11 天前
ETL连接器好用吗?如何实现ETL连接?
大数据·数据库·数据仓库·信息可视化·etl
袋鼠云数栈11 天前
3节点开启大数据时代:EasyMR助力中小企业轻装上阵、国产转型
大数据·数据库·数据仓库·sql·数据开发·数据中台·袋鼠云
巴基海贼王11 天前
针对数据仓库方向的大数据算法工程师面试经验总结
大数据·数据仓库·算法
fpcc12 天前
c++26新功能—hive容器
c++·hive
isNotNullX13 天前
据字典是什么?和数据库、数据仓库有什么关系?
大数据·数据库·数据仓库·oracle·数据治理