6 大数据处理技术导论 | Datawhale组队学习46期( 二 )

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name-- 表名[(col_name data_type [COMMENT col_comment],... [constraint_specification])]-- 列名 列数据类型[COMMENT table_comment]-- 表描述[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]-- 分区表分区规则[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]-- 分桶表分桶规则[SKEWED BY (col_name, col_name, ...) ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)[STORED AS DIRECTORIES] ]-- 指定倾斜列和值[[ROW FORMAT row_format][STORED AS file_format]| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]]-- 指定行分隔符、存储文件格式或采用自定义存储格式[LOCATION hdfs_path]-- 指定表的存储位置[TBLPROPERTIES (property_name=property_value, ...)]-- 指定表的属性[AS select_statement];-- 从查询结果创建表
使用like 语句可以复制一张表的表结构
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name-- 创建表的表名LIKE existing_table_or_view_name-- 被复制表的表名[LOCATION hdfs_path]; -- 存储位置
加载 HDFS 路径数据文件到表的命令如下:
-- 加载数据到 emp 表中load data local inpath "/home/omc/emp.txt" into table emp;
5.2 修改表
ALTER TABLE table_name RENAME TO new_table_name;
ALTER TABLETO ;
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type[COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];
修改表中的字段属性,命令如下
-- 修改字段名和类型ALTER TABLE whaleMart CHANGE goods_id goods_code STRING;-- 修改字段 goods_code 的名称并将其放置到 goods_name 字段后ALTER TABLE whaleMart CHANGE goods_code goods_id STRING AFTER goods_name;-- 为字段增加注释ALTER TABLE whaleMart CHANGE goods_id goods_id STRING COMMENT '商品编号';
可以看到,添加的中文注释并未正常显示 。这是因为 hive 元数据库创建,默认编码是 ,需要登录当前 hive 运行环境的 mysql 数据库,修改 mysql 配置文件 /etc/f 内容,确保包含如下内容(缺少的添加):
[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_general_ci[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4
修改后重启 mysql
systemctl stop mysqldsystemctl start mysqld
hive 表重新插入注释,即可正常显示中文
5.3 清空表、删除表
-- 清空整个表或表指定分区中的数据TRUNCATE TABLE table_name [PARTITION (partition_column = partition_col_value,...)];
需要注意的是:只有内部表才支持命令,对外部表执行操作时会报错 。
DROP TABLE [IF EXISTS] table_name [PURGE];
5.4 其他命令
DESCRIBE|Desc DATABASE [EXTENDED] db_name;-- EXTENDED 是否显示额外属性DESCRIBE|Desc [EXTENDED|FORMATTED] table_name;-- FORMATTED 以友好的展现方式查看表详情
-- 查看视图列表SHOW VIEWS-- 查看表的分区列表SHOW PARTITIONS table_name;-- 查看表或者视图的创建语句SHOW CREATE TABLE ([db_name.]table_name|view_name);