大数据(3d)HIVE基础操作

1、注释方法

SHOW  -- 这是注释
DATABASES;

2、库操作

-- 建库
CREATE DATABASE IF NOT EXISTS school
LOCATION '/school';  -- 文件夹在HDFS的位置
-- 查看有什么库
SHOW DATABASES;
-- 查看指定库
DESC DATABASE school;
-- 切换库
USE school;
-- 删库
DROP DATABASE school CASCADE;

3、建表主要语法

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名
[(列名 数据类型 [COMMENT 列注释], ...)]
[COMMENT 表注释]
[PARTITIONED BY (分区列名 数据类型 [COMMENT 列注释], ...)]
[ROW FORMAT]
    [DELIMITED FIELDS TERMINATED BY 字段分隔]
    [COLLECTION ITEMS TERMINATED BY char 数组分隔]
    [MAP KEYS TERMINATED BY 键值分隔]
    [LINES TERMINATED BY 行分隔]
[STORED AS 数据存储格式]
[LOCATION HDFS路径]
[TBLPROPERTIES(property_name=property_value, ...)]
[AS 查询语句(根据查询结果创建表)]
[LIKE 表名(只复制表结构)]

4、管理表 & 外部表

英文名MANAGED_TABLEEXTENDED_TABLE
中文名管理表外部表
主要区别删表时 全删删表时 只删元数据
应用场景中间表、结果表原始表
创建方式默认EXTENDED
-- 创建 管理表
CREATE TABLE
school.student1 (age INT) LOCATION '/school/student1';
-- 创建 外部表
CREATE EXTERNAL TABLE
school.student2 (age INT) LOCATION '/school/student2';

建表后,MySQL处可查到

删表前

-- 删表
DROP TABLE school.student1;
DROP TABLE school.student2;

删表后,外部表还在

5、分区表

  • 分区表是对应一个HDFS上的独立文件夹
  • 查询时可以加WHERE,效率高

1、创建分区表

DROP TABLE IF EXISTS school.student;  --删表
CREATE TABLE school.student (s_id INT)
PARTITIONED BY (grade STRING)  --分区表
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','  --行格式
LOCATION '/school/student'  -- 数据在HDFS的存放位置
;

2、插入数据

INSERT INTO TABLE school.student VALUES (1,'a');
INSERT INTO TABLE school.student VALUES (2,'a');
INSERT INTO TABLE school.student VALUES (3,'b');

3、查询分区

SHOW PARTITIONS school.student;

4、查询加WHERE

SELECT * FROM school.student WHERE grade='a';

5、查看HDFS

6、常用数据类型

常用数据类型名称建表示例值示例范围
字符串STRING
整数INT-2,147,483,648 to 2,147,483,647
日期DATE'2016-11-21'0000-­01-­01 to 9999-­12-­31
时间戳TIMESTAMP'2018-6-11 8:30:00'
数组ARRAYARRAY<STRING>["ab","cd"]
键值对MAPMAP<STRING,INT>{"k1":3,"k2":2}
小数DECIMALDECIMAL(3,2)1.23

1、建库、删表建表

--建库
CREATE DATABASE IF NOT EXISTS school LOCATION '/school';
DROP TABLE IF EXISTS school.student;  --删表
CREATE TABLE IF NOT EXISTS school.student  --默认创建 管理表
(
  s_id    INT,            --学号
  s_name  STRING,         --姓名
  birth   DATE,           --生日
  s_time  TIMESTAMP,      --入学时间
  course  ARRAY<STRING>,  --课程
  score   MAP<STRING,INT> --成绩
)
LOCATION '/school/student'  -- 数据在HDFS的存放位置
;

2、查看表信息

SHOW CREATE TABLE school.student;

3、插入数据

INSERT INTO TABLE school.student VALUES(
1001,
'a1',
'1994-1-1',
'2020-1-1 8:30:00',
ARRAY('math','physics'),
MAP('math',6,'physics',7)
);

4、查询结果

7、数据导入

主要方法说明可用场景
LOAD DATA整个文件导入HDFS导入HIVE数仓原始层
INSERT查询数据插到目标表数仓内部增量导入
CREATE使用查询语句建表数仓应用层

7.1、导入文件模式

区别LOCAL模式LOCAL模式
数据源从本地从HDFS
文件操作复制移动(源文件会被删)
适用场景入门练习企业生产

1、本地数据准备

vi /root/student.txt
1001,a,1994-1-1,2018-6-11 12:30:00,math_physics,math:7_physics:9
1003,a,1992-11-2,2016-7-11 8:30:00,math_physics,math:8_physics:9
1002,b,1993-3-3,2017-11-1 9:00:00,math_chemistry,math:8_chemistry:6

2、建表

DROP TABLE IF EXISTS school.student;  --删表
CREATE TABLE IF NOT EXISTS school.student
(
  s_id    INT              COMMENT "学号",
  grade   STRING           COMMENT "班级",
  birth   DATE             COMMENT "生日",
  s_time  TIMESTAMP        COMMENT "入学时间",
  course  ARRAY<STRING>    COMMENT "课程",
  score   MAP<STRING,INT>  COMMENT "成绩"
)
COMMENT "学生信息表"
ROW FORMAT --行格式
    DELIMITED FIELDS TERMINATED BY ','  --字段间分割符
    COLLECTION ITEMS TERMINATED BY '_'  --数组内分隔符
    MAP KEYS TERMINATED BY ':'          --键值对分隔符
LOCATION '/school/student'  -- 数据在HDFS的存放位置
;

3、数据导入,LOCAL为本地

LOAD DATA  -- 数据导入
LOCAL  -- 从本地导入,去掉就是默认从HDFS
INPATH '/root/student.txt'  -- 数据来源
OVERWRITE  --覆盖写入,不写的话默认追加
INTO TABLE school.student;

4、查看:文件位置、文件名、表内容

7.2、INSERT模式

1、续上面数据,创建一张按grade分区的表

DROP TABLE IF EXISTS school.student2;  --删表
CREATE TABLE IF NOT EXISTS school.student2 (
  s_id    INT              COMMENT "学号",
  birth   DATE             COMMENT "生日",
  s_time  TIMESTAMP        COMMENT "入学时间",
  course  ARRAY<STRING>    COMMENT "课程",
  score   MAP<STRING,INT>  COMMENT "成绩"
) COMMENT "学生信息表"  --表的注释
PARTITIONED BY (grade STRING)  --分区表
ROW FORMAT --行格式
    DELIMITED FIELDS TERMINATED BY ','  --字段间分割符
    COLLECTION ITEMS TERMINATED BY '_'  --数组内分隔符
    MAP KEYS TERMINATED BY ':'          --键值对分隔符
LOCATION '/school/student2'  -- 数据在HDFS的存放位置
;

2、数据导入

INSERT
OVERWRITE  --OVERWRITE覆盖写入,INTO追加
TABLE school.student2  --数据目的地
PARTITION(grade='a')  --分区
SELECT s_id,birth,s_time,course,score FROM school.student WHERE grade='a';
INSERT
OVERWRITE  --OVERWRITE覆盖写入,INTO追加
TABLE school.student2  --数据目的地
PARTITION(grade='b')  --分区
SELECT s_id,birth,s_time,course,score FROM school.student WHERE grade='b';

3、查看

7.3、CREATE模式

DROP TABLE IF EXISTS school.student3;
CREATE TABLE school.student3
AS SELECT s_id,score from student WHERE course[1]='physics';

查询SELECT * FROM school.student3;

<think>好的,用户想了解大数据可视化的常见方法和工具。首先,我需要回顾一下大数据可视化的基本概念,确保自己理解正确。大数据可视化是将庞大复杂的数据集通过图形化手段展示,帮助用户更容易理解和分析数据中的模式、趋势和异常值。 接下来,用户提到了参考引用中的内容,特别是引用[1]和[2]。引用[1]提到数据可视化是将大型数据集通过图形图像示,并利用工具发现未知信息。引用[2]则讨论了在机器学习中使用可视化来理解数据特征和模型性能,并提到了Python代码示例。需要确保回答中涵盖这些内容,并正确添加引用标识。 然后,我需要整理常见的方法和工具。常见的方法包括图展示(如折线图、柱状图、散点图)、热力图、地理信息可视化、网络关系图等。工具方面,Python的Matplotlib、Seaborn、Plotly,以及JavaScript的D3.js、Tableau、Power BI等都是常用的。此外,大数据平台如Hadoop、Spark的可视化组件也可能需要提及。 还要考虑用户可能的实际应用场景,比如是否需要实时可视化、交互式功能,或者是否需要处理动态数据流。同时,引用中的机器学习可视化部分,可能需要提到如何用可视化工具分析模型性能,比如混淆矩阵、ROC曲线等。 需要注意用户的要求是结构清晰,分步骤解答,所以可能需要将方法和工具分开说明,每个部分下再细分具体的技术或软件。同时,要确保LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但当前问题中可能涉及数学公式较少,但如果有的话需要正确应用。 最后,生成相关问题时要考虑用户可能的后续疑问,比如工具的比较、选择方法的依据、实际案例等,确保问题相关且有引导性。例如,如何选择适合的可视化工具,或者大数据可视化在某个行业的具体应用。 总结回答结构: 1. 常见方法:分基本图、高维数据、地理空间、动态数据、交互式可视化。 2. 常用工具:编程工具(Python库、JavaScript库)、商业工具、大数据平台集成工具。 3. 结合引用内容,自然添加引用标识。 4. 生成相关问题,如工具比较、应用案例、性能优化等。 检查是否有遗漏点,比如是否需要提到预处理步骤,或者可视化的最佳实践。根据引用内容,用户可能更关注分析流程中的可视化步骤,因此重点应放在方法和工具本身,而不是数据预处理。保持回答简洁,符合用户需求。</think>### 大数据可视化的常见方法和工具 #### 一、常见方法 1. **基础展示** - **折线图/柱状图/散点图**:用于展示趋势、分布和相关性,例如时间序列数据对比[^1]。 - **热力图**:通过颜色梯度示数据密度或矩阵关系,如用户行为分析。 - **饼图/环形图**:适用于比例分布的可视化,例如市场份额划分。 2. **高维数据可视化** - **平行坐标系**:展示多维数据特征,常用于机器学习特征分析[^2]。 - **降维投影**:通过PCA或t-SNE将高维数据映射到2D/3D空间,例如聚类结果可视化。 - **桑基图**:描述数据流的转换路径,如用户转化漏斗分析。 3. **地理空间可视化** - **点密度图**:在地图上标记数据分布,如物流节点监控。 - **等值线图**:结合地理信息展示数值变化,例如气象数据可视化。 4. **动态与交互式可视化** - **实时仪盘**:动态更新数据,如股票交易监控。 - **可交互图**:用户可通过缩放、筛选探索数据细节,常见于Tableau和Power BI工具。 #### 二、常用工具 1. **编程工具** - **Python库**: - `Matplotlib`:基础绘图库,支持静态图生成。 - `Seaborn`:基于Matplotlib,简化统计图(如箱线图、分布图)的绘制。 - `Plotly`:生成交互式图,支持3D可视化。 ```python import plotly.express as px fig = px.scatter(df, x='feature1', y='feature2', color='cluster') fig.show() ``` - **JavaScript库**: - `D3.js`:灵活性强,适合定制复杂可视化效果(如网络关系图)。 - `ECharts`:百度开源库,支持动态数据更新和丰富的图类型。 2. **商业工具** - **Tableau**:拖拽式操作,适合快速生成交互式仪盘[^1]。 - **Power BI**:与微软生态集成,支持实时数据源连接。 - **Qlik Sense**:基于关联数据模型,提供智能数据探索功能。 3. **大数据平台集成工具** - **Apache Superset**:开源工具,可直接连接Hive、Spark等大数据源。 - **Grafana**:专注于时序数据监控,常用于物联网和运维场景。 #### 三、应用示例 - **金融领域**:通过热力图分析风险分布,或使用折线图监控实时交易量。 - **医疗领域**:利用桑基图展示患者治疗路径,或通过地理空间图追踪疾病传播趋势。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值