话不多说,直接写笔记了,你不用知道数据原本是什么样的,能够举一反三就行,操作都是一样的,只是场景不同而已,另外一些没有备注操作是干嘛的,复制粘贴看下就知道啦,很简单的,如果你有MySQL等数据库基础,一般都看得懂,注意,下面的所有你看到的 都是空格,不是table键打出来的,因为table键打出来的,在CLI和beeline上是不支持的,是会报错的

基本操作

CREATE DataBase

语法:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];

–说明:
–DATABASE|SCHEMA : 这两个是同一个东西,都表示数据库
–[IF NOT EXISTS] : 可选的,如果不使用这个,然后去创建一张已经存在的表的话则会报错
–[COMMENT] : 可选的,表示给创建的DB备注,必须备注在单引号中
–[LOCATION] : 可选的,DB的存储路径是我们在hive-site.xml中配置的hive.metastore.warehouse.dir(即默认为/user/hive/warehouse)
– 如果想给DB自定义存储路径的话,则设置这个选项,下面的外部表会讲到这个

[WITH DBPROPERTIES] : 可选的,表示给创建的DB的属性

举个例子:

CREATE DATABASE hive_learning;
CREATE DATABASE IF NOT EXISTS hive_learning;

– 注意,前面不能是table,必须一步步敲空格,否则会报错

CREATE DATABASE IF NOT EXISTS hive_testCOMMENT 'just a test db'LOCATION 'hdfs://master:8020/user/hadoop-jrq/hive-course/dbs'WITH DBPROPERTIES ('Created by' = 'jrq', 'Created on' = '2019-08-29');

Show DATABASE

查看有哪些数据库

SHOW DATABASES [LIKE identifier_with_wildcards];
SHOW DATABASES; -- 查看有哪些数据库
SHOW DATABASES LIKE 'hive*';  -- 查看以hive开头的表
show tables;  -- 查看这个数据库下有哪些表

describe DATABASE

DESCRIBE DATABASE [EXTENDED] database_name;

–[EXTENDED] : 表示将DB的属性也展示出来

DESCRIBE DATABASE hive_test;
DESCRIBE DATABASE EXTENDED hive_test;

AlTER DATABASE

修改表的一些属性等操作

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES(property_name = property_value, ....);-- 修改数据库的创建者为jeffy
ALTER DATABASE hive_test SET DBPROPERTIES('Created by' = 'jeffy');DESCRIBE DATABASE EXTENDED hive_test;

USE DATABASE

切换到某个数据库中去

USE (DATABASE|SCHEMA) database_name;
-- 下面这两个操作是一样的
USE DATABASE hive_test;
use hive_test;
-- 一进去都是在default数据库,如果不切换,建的表都在这下面
CREATE TABLE pokes(foo STRING, bar STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

DROP DATABASE

语法:

  DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]

–[RESTRICT|CASCADE] : 如果DB中还有表存在的话,那么在RESTRICT模式下,则不能删除DB;
– 但是如果是CASCADE的模式下,则会先删除这个DB下的所有表,然后再输出这个DB
– hive默认是RESTRICT模式

深入操作

表的行格式(ROW FORMAT)

CREATE TABLE IF NOT EXISTS sensor_row_format(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

– 将指定的数据导入一张表里去,这个文件是以 , 分割的数据

LOAD DATA INPATH 'hdfs://master:8020//user/hadoop-jrq/hbase-course/20190829/omneo.csv' OVERWRITE INTO TABLE sensor_row_format;

[ROW FORMAT] : 表示表中每一行的格式,可以取 DELIMITED 和 SERDE 两个值
ROW FORMAT DELIMITED —> 表示每一行是按照一定的分隔符分隔开的格式
FIELDS TERMINATED BY ‘,’ —> 表示每一行的每一个字段是按照逗号分隔开的 这两个是配合使用的

ROW FORMAT SERDE —> 自定义每一行的格式
‘org.apache.hadoop.hive.serde2.RegexSerDe’ – 表示按照正则去匹配每一行的数据
‘org.apache.hive.hcatalog.data.JsonSerDe’ – 说明数据文件是json的格式存储的
‘org.apache.hadoop.hive.serde2.OpenCSVSerde’ – 说明数据文件是csv的格式存储的

Regex

CREATE TABLE IF NOT EXISTS tomcat_access_log(ip STRING,userid STRING,username STRING,time STRING,url STRING,status STRING,file_size STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES('input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) (-|\\[.*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)'
);LOAD DATA LOCAL INPATH '/home/hadoop-jrq/hbase-course/apache-tomcat-9.0.8/logs/localhost_access_log.2019-08-07.txt' OVERWRITE INTO TABLE tomcat_access_log;

JSON

CREATE TABLE json_table(a string, b bigint) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe';
LOAD DATA LOCAL INPATH '/home/hadoop-jrq/hive-course/json_table.json' OVERWRITE INTO TABLE json_table;

CSV

CREATE TABLE my_table(a string, b string, ...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ("separatorChar" = "\t",  -- 表示csv的分隔符"quoteChar"     = "'", -- 表示将不需要切割的字段值"escapeChar"    = "\\"  -- 如果在quote标记的字段值中还含有quote,则用escape来避免(读写参数)
)

上面几个参数不理解的,可以移步到我的另一个博客https://blog.csdn.net/weixin_42411818/article/details/98734464

表结构的查询

SHOW TABLES --> 表示查看一个DB中有多少张表
–下面的功能是一样的

DESC tomcat_access_log;
DESCRIBE tomcat_access_log;DESCRIBE EXTENDED sensor_row_format;   -- 看表的字段信息
DESCRIBE FORMATTED sensor_row_format;  -- 好看一点SHOW CREATE TABLE sensor_row_format;  -- 看这个表的创建语句
SHOW CREATE TABLE tomcat_access_log;

Storage Format

注意数据格式是什么,导入的数据格式就是什么,而且必须按照指定的切割方式存储
1.默认的存储格式是text format

CREATE TABLE IF NOT EXISTS sensor_format_text(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;  -- 数据存储文件格式默认就是TXT文件SHOW CREATE TABLE sensor_format_text;  -- 查看创建语句

上面的语句和下面的语句是同等的(因为其他的都是默认的)

CREATE TABLE `sensor_format_text`(`id` string, `event_id` string, `event_type` string, `part_name` string, `part_number` string, `version` string, `payload` string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ( 'field.delim'=',', 'serialization.format'=',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION'hdfs://master:8020/user/hive/warehouse/sensor.db/sensor_format_text'
TBLPROPERTIES ('transient_lastDdlTime'=' 1567058652');

2.Hive的查询处理过程
SerDe 是 “Serializer and Deserializer.” 的缩写
Hive uses SerDe (and FileFormat) to read and write table rows.
读的过程步骤:HDFS files --> InputFileFormat --> <key, value> --> Deserializer --> Row object
写的过程步骤:Row object --> Serializer --> <key, value> --> OutputFileFormat --> HDFS files

3.其他的File Format

parquet

CREATE TABLE IF NOT EXISTS sensor_parquet(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
STORED AS PARQUET;  -- 文件存储格式为parquet

SHOW CREATE TABLE sensor_parquet;
结果为:

ROW FORMAT SERDE'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'STORED AS INPUTFORMAT'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'

导入数据方式:
LOAD DATA INPATH “/user/hadoop-jrq/hive-course/parquet” OVERWRITE INTO TABLE sensor_parquet;

orc

CREATE TABLE IF NOT EXISTS sensor_orc(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
STORED AS ORC;SHOW CREATE TABLE sensor_orc;  -- 看表的建表信息
-- 结果为:
ROW FORMAT SERDE'org.apache.hadoop.hive.ql.io.orc.OrcSerde'STORED AS INPUTFORMAT'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
-- 导入数据
LOAD DATA INPATH "/user/hadoop-jrq/hive-course/orc" OVERWRITE INTO TABLE sensor_orc;

avro

CREATE TABLE IF NOT EXISTS sensor_avro(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
STORED AS AVRO;SHOW CREATE TABLE sensor_avro;ROW FORMAT SERDE'org.apache.hadoop.hive.serde2.avro.AvroSerDe'STORED AS INPUTFORMAT'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'LOAD DATA INPATH "/user/hadoop-jrq/hive-course/avro" OVERWRITE INTO TABLE sensor_avro;

sequence File

CREATE TABLE IF NOT EXISTS sensor_sequence(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS SEQUENCEFILE;--SEQUENCEFILE需要自定义 SERDE
SHOW CREATE TABLE sensor_sequence;STORED AS INPUTFORMAT'org.apache.hadoop.mapred.SequenceFileInputFormat'OUTPUTFORMAT'org.apache.hadoop.mapred.SequenceFileOutputFormat'LOAD DATA INPATH "/user/hadoop-jrq/hive-course/sequence" OVERWRITE INTO TABLE sensor_sequence;

表的种类

内部表

CREATE TABLE IF NOT EXISTS sensor.sensor_managed(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;LOAD DATA LOCAL INPATH '/home/hadoop-jrq/hive-course/omneo.csv' OVERWRITE INTO TABLE sensor_managed;TRUNCATE TABLE sensor_managed; -- 清除表的数据LOAD DATA INPATH 'hdfs://master:8020/user/hadoop-jrq/hive-course/omneo.csv' OVERWRITE INTO TABLE sensor_managed;  -- 如果是在hdfs上的话,会把这个数据mv过去,所以原数据会不存在DROP TABLE sensor_managed; -- 删除表的时候,数据也删除了  这就是内部表的一个特点

外部表

CREATE EXTERNAL TABLE IF NOT EXISTS sensor_external (  -- EXTERNAL加上它就是一个外部表id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://master:8020/user/hadoop-jrq/hive-course/omneo';  -- 指定外部表数据的存储位置DROP TABLE sensor_external; -- 删除表的时候,数据不会被删除

内部表和外部表的最大区别就是内部表删除后数据会不存在了,而外部表删除表后数据依旧会存在

临时表
只存在于当前会话的表,一旦会话关闭,则表被删除 一般作为临时数据存放

CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS sensor (id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://master:8020/user/hadoop-jrq/hive-course/omneo';

视图
它只是一个逻辑,并不是存储数据的
比如有个一查询很长,可以写一个视图,这样的话就可以直接用了 比如 select * from alert_sensor_view;

CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], ....)] AS SELECT ....CREATE VIEW IF NOT EXISTS alert_sensor_view AS SELECT * FROM jrq.sensor_external WHERE event_type = 'ALERT';DROP VIEW IF EXISTS alert_sensor_view;  -- 删除视图

数据类型

numeric data types – 数字的类型

TINYINT  1-byte 50Y  -- 50Y就表示这个50类型是TINYINT,下面同理
SMALLINT 2-byte 50S
INT     4-byte 50
BIGINT  8-byte 50L
FLOAT   4-byte
DOUBLE  8-byte
DECIMAL 17-byteCREATE TABLE customer(id BIGINT, age TINYINT)
CREATE TABLE ORDER (id BIGINT, price DECIMAL(10, 2))  -- (10,2)  长度10,精度2

string data types – 字符串类型

STRING:使用单引号或者双引号括起来的字符串
VARCHAR:长度可变的字符串
CHAR:定长字符串,如果存储的字符串的长度小于指定的长度,则用空格填充CREATE TABLE customer(id BIGINT, name STRING, sex CHAR(6), role VARCHAR(64))

Date/Time data types – 时间类型

DATE表示日期,从0000-01-01到8020-12-31
TIMESTAMP表示时间,包含年月日时分秒CREATE TABLE date_example(id INT, created_at DATE, updated_at TIMESTAMP)

boolean date types

BOOLEAN      true and false

complex data types – 复杂数据类型

STRUCT 语法:STRUCT<col_name : data_type, ....>  --结构体
MAP   -- 隐射类型
ARRAY  -- 数组类型CREATE TABLE employee(name STRING, salary FLOAT, subordinates ARRAY<string>, deductions MAP<string,FLOAT>, address STRUCT<stree:string,city:string,state:string,zip:int>)
ROW FORMAT DELIMITED  -- 自定义分割符FIELDS TERMINATED BY '\t'   -- 每个字段是按照什么分割的COLLECTION ITEMS TERMINATED BY ','   -- 数组或者结构体的分隔符是按照什么分割的MAP KEYS TERMINATED BY ':'  -- map的分割符是什么
STORED AS TEXTFILE;LOAD DATA LOCAL INPATH '/home/hadoop-jrq/hive-course/employee.txt' OVERWRITE INTO TABLE employee;SELECT subordinates[0] FROM employee;   -- 通过下标去查询
SELECT deductions['Federal Taxes'] FROM employee;  -- 直接访问key去查map类型
SELECT size(deductions) FROM employee;  -- 这个map的大小
SELECT address.state,address.stree FROM employee;  -- 查询结构体的数据

分区表

创建一张分区内部表

CREATE TABLE IF NOT EXISTS sensor_managed_partition(id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
PARTITIONED BY(year INT, month INT, day INT)  -- 按照年月日进行分区
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;LOAD DATA INPATH 'hdfs://master:8020/user/hadoop-jrq/hive-course/omneo/20190829' OVERWRITE INTO TABLE sensor_managed_partition PARTITION(year=2019, month=201908, day=201908029);LOAD DATA INPATH 'hdfs://master:8020/user/hadoop-jrq/hive-course/omneo/20190829' OVERWRITE INTO TABLE sensor_managed_partition PARTITION(year=2019, month=201908, day=20190829);select * from sensor_managed_partition where day=20190829 limit 10;  -- 只会扫描这一天的数据

创建一张分区外部表

CREATE EXTERNAL TABLE IF NOT EXISTS sensor_external_partition (id STRING, event_id STRING, event_type STRING, part_name STRING, part_number STRING, version STRING, payload STRING)
PARTITIONED BY(year INT, month INT, day INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
-- 下面的文件结构一定要和年月日对应起来,如下:
--year=2019/month=201908/day=20190829
LOCATION 'hdfs://master:8020/user/hadoop-jrq/hive-course/omneo'; select * from sensor_external_partition limit 10;  -- 这时候是没有数据的,因为还没有挂载上去 分区挂载一次就行了,当你文件增加的时候,数据也会自动加载到hive中去-- 挂载数据
-- ALTER 的方式加上一个分区的方式挂载数据
ALTER TABLE sensor_external_partition ADD PARTITION (year=2019, month=201908, day=20190829) LOCATION '/user/hadoop-jrq/hive-course/omneo/year=2019/month=201908/day=20190829';-- 这个方式也是可以的,前提是分区正确
ALTER TABLE sensor_external_partition ADD PARTITION (year=2019, month=201908, day=20190829);-- 查看一张表有多少的PARTITION
SHOW PARTITIONS sensor_external_partition;

外部分区表和内部分区表的 rename partition 区别

-- 外部表的话,分区虽然改变了,但是不会改变数据文件的路径
ALTER TABLE sensor_external_partition PARTITION (year=2019, month=201908, day=20190829) RENAME TO PARTITION (year=2019, month=201908, day=20190829);
SHOW PARTITIONS sensor_external_partition;-- 内部表的话,会改变数据文件的路径
ALTER TABLE sensor_managed_partition PARTITION (year=2019, month=201908, day=20190829) RENAME TO PARTITION (year=2019, month=201908, day=20190829);
SHOW PARTITIONS sensor_managed_partition;

外部表和内部表的exchange partition 交换分区

-- 将sensor_external_partition分区复制给sensor_external_partition_like
-- sensor_external_partition本身的分区就会被删除
CREATE TABLE sensor_external_partition_like LIKE sensor_external_partition; -- 创建一个一样的表ALTER TABLE sensor_external_partition_like EXCHANGE PARTITION(year=2019, month=201908, day=20190829) WITH TABLE sensor_external_partition;-- 修复在对应HDFS上有文件而在metastore中没有对应分区的分区,当程序出问题没有挂载数据的时候,就可以用这个
MSCK REPAIR TABLE sensor_external_partition;

外部表和内部表的drop partition

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...] [PURGE];
-- 删除分区的时候外部表的数据不会被清除掉
ALTER TABLE sensor_external_partition DROP IF EXISTS PARTITION (year=2019, month=201908, day=20190829);
-- 删除分区的时候内部表的数据会被清除掉,放到了HDFS的Trash中
ALTER TABLE sensor_managed_partition DROP IF EXISTS PARTITION (year=2019, month=201908, day=20190829) PURGE; [PURGE] : 内部表加上 PURGE 的话,则数据不会放到HDFS的Trash中,永远被删除了-- 删除分区数据(只能删除内部表的分区数据),数据虽然删除,但是表的分区还在
TRUNCATE TABLE table_name [PARTITION partition_spec];
TRUNCATE TABLE sensor_managed_partition PARTITION(year=2019, month=201908, day=20190829);

表和分区的修改

表的重命名

ALTER TABLE sensor_managed_partition RENAME TO sensor_managed_partition_new;  -- 内部表重命名路径会改变
ALTER TABLE sensor_managed_partition_new RENAME TO sensor_managed_partition;  -- 外部表重命名路径不会改变

每一个分区对应的存储数据文件的格式可以不同

ALTER TABLE sensor_external_partition SET LOCATION "/user/hadoop-jrq/hive-course/omneo-new";  --默认会加上hdfs,改变数据路径,修改后原来的分区数据依旧存在,因为分区还在-- 重新指定相同的分区后(指定的路径没有数据)数据才会消失
ALTER TABLE sensor_external_partition PARTITION (year=2019, month=201908, day=20190829) SET LOCATION "/user/hadoop-jrq/hive-course/omneo-new/year=2019/month=201908/day=20190829";-- 但是20190829这一天的数据却是以PARQUET的文件格式存在
ALTER TABLE sensor_external_partition PARTITION (year=2019, month=201908, day=20190829)  SET FILEFORMAT PARQUET;
ALTER TABLE sensor_external_partition PARTITION (year=2019, month=201908, day=20190829) SET LOCATION "/user/hadoop-jrq/hive-course/omneo-new/year=2019/month=201908/day=20190829";--修改一张表的file format,不要轻易使用
ALTER TABLE sensor_external_partition SET FILEFORMAT PARQUET;

字段名的修改:

CREATE TABLE test_change (a int comment "this", b int, c int);  -- 先创建一张表--将字段a修改为a1
ALTER TABLE test_change CHANGE a a1 INT;--将字段a1重名为a2,且将字段a2的数据类型设置为STRING,并且将a2放置在字段b的后面
ALTER TABLE test_change CHANGE a1 a2 STRING AFTER b;--给字段a2添加commnent
ALTER TABLE test_change CHANGE a2 a2 STRING COMMENT 'this is column a1';--用于新增不存在的列
ALTER TABLE test_change ADD COLUMNS (a int, d int);

hive操作总结DDL相关推荐

  1. 8 Hive操作—DDL语言

    一.Hive数据模型总览 每个表都必须归属于某个数据库.故Hive里面首先是数据库,再是表.公司里面可以每个业务线创建一个数据库,属于同一个业务线的数据再分别创建比如评论表.订单表.用户表 查看当前数 ...

  2. Hive 操作(一)

    Hive 基础及安装 Hive 操作(一) hive 操作(二)--使用 mysql 作为 hive 的metastore hive 操作(三)--hive 的数据模型 hive 操作(四) 注: ( ...

  3. 大数据单机学习环境搭建(5)Hive建表DDL详解

    专题:大数据单机学习环境搭建和使用 1. Hive建表简单示例 1.1.Hive建表语句 1.2.表详细信息 1.3.数据展示 2. Hive建表语法详解 3.拓展1:复杂数据分割 4.拓展2:事务表 ...

  4. 在Hive中执行DDL之类的SQL语句时遇到的一个问题

    在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execut ...

  5. spark指定hive字段_Spark2.0集成Hive操作的相关配置与注意事项

    前言 补充说明 Hive中metastore(元数据存储)的三种方式:内嵌Derby方式 Local方式 Remote方式 [一].内嵌Derby方式这个是Hive默认的启动模式,一般用于单元测试,这 ...

  6. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·003【表的约束、表的CRUD操作(DDL语句)】

    文章目录 一.表的约束 1.约束类型 2.添加约束 二.表的CRUD操作(DDL语句) 1.C(Create):创建 2.R(Retrieve):查询 3.U(Update):更新 4.D(Delet ...

  7. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·002【SQL介绍、数据库的CRUD操作(DDL语句)】

    文章目录 一.SQL 1.介绍 2.格式 3.分类 (1).DDL(数据定义语句) (2).DML(数据操作语句) (3).DQL(数据查询语句) (4).DCL(数据控制语句) (5).TPL(事务 ...

  8. hive 操作(四)

    Hive 基础及安装 Hive 操作(一) hive 操作(二)--使用 mysql 作为 hive 的metastore hive 操作(三)--hive 的数据模型 hive 操作(四) dist ...

  9. hive 操作(三)——hive 的数据模型

    Hive 基础及安装 Hive 操作(一) hive 操作(二)--使用 mysql 作为 hive 的metastore hive 操作(三)--hive 的数据模型 hive 操作(四) 大的分类 ...

最新文章

  1. html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
  2. python基础语法合集-Python基础语法合集.zip
  3. CTFshow 信息收集 web13
  4. Web前端求职时都会被问到的Redis面试题分享
  5. 使用Caffe预测遇到的问题
  6. html click事件 参数,vue 实现click同时传入事件对象和自定义参数
  7. Linux 查看ERROR日志方法
  8. java httpclient 进度条_SpringBoot如何实现一个实时更新的进度条的示例代码
  9. 简单类型视图状态应用
  10. AVR单片机(ATmega128)单片机运算乘除法大约所需时间
  11. 基于Java开发的学校信息管理系统的设计与实现(含论文及毕业设计源码、数据库文件)
  12. 《系统集成项目管理工程师》必背知识点
  13. 带左右箭头图片轮播的JS代码
  14. 关于电脑程序无响应的常见原因以及解决办法
  15. 什么是Cutoff Scores/Marks?
  16. 图像融合:Image Fusion with Guided Filtering
  17. sklearn中的make_blobs
  18. vim编辑器删除键失效问题
  19. 海量搜索服务架构搭建2-SolrCloud集群搭建
  20. PyQt5快速入门(一)PyQt5简介

热门文章

  1. 为什么要学习思维导图?思维导图的作用
  2. “数学界的诺贝尔”公布2019年得主,首位女数学家获奖
  3. 【matlab图像处理】图像的算术运算实践
  4. 图形图像-Adobe PhotoshopCS6超速入门,一节课学会PS [实用技能]-韦语洋(Lccee)-专题视频课程...
  5. 地道美语发音的全面总结
  6. Hadoop fs 命令使用手册
  7. java 静态方法 实例化_java静态方法和实例化方法的区别(copy)
  8. 2000亿身价中公教育的长期战争
  9. v7000 linux多路径,关于V7000多路径问题
  10. 分割视频成图片+labelimg标注数据集