Spark SQL----DROP语句

发布于:2024-07-15 ⋅ 阅读:(122) ⋅ 点赞:(0)

一、DROP DATABASE

1.1 描述

删除数据库,并从文件系统中删除与该数据库关联的目录。如果数据库在系统中不存在,将抛出异常。

1.2 语法

DROP { DATABASE | SCHEMA } [ IF EXISTS ] dbname [ RESTRICT | CASCADE ]

1.3 参数

  • DATABASE | SCHEMA
    DATABASE和SCHEMA的意思是一样的,两者都可以使用。
  • IF EXISTS
    如果指定,则当数据库不存在时不会引发异常。
  • RESTRICT
    如果指定,将限制删除非空数据库,并且在默认情况下处于启用状态。
  • CASCADE
    如果指定,将删除所有关联的表和函数。

1.4 例子

-- Create `inventory_db` Database
CREATE DATABASE inventory_db COMMENT 'This database is used to maintain Inventory';

-- Drop the database and it's tables
DROP DATABASE inventory_db CASCADE;

-- Drop the database using IF EXISTS
DROP DATABASE IF EXISTS inventory_db CASCADE;

二、DROP FUNCTION

2.1 描述

DROP FUNCTION语句删除临时或用户定义函数(UDF)。如果函数不存在,将抛出异常。

2.2 语法

DROP [ TEMPORARY ] FUNCTION [ IF EXISTS ] function_name

2.3 参数

  • function_name
    指定现有函数的名称。函数名称可以选择性地用数据库名称限定。
    语法:[database_name.]函数名
  • TEMPORARY
    应用于删除TEMPORARY函数。
  • IF EXISTS
    如果指定,则在函数不存在时不会引发异常。

2.4 例子

-- Create a permanent function `test_avg`
CREATE FUNCTION test_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';

-- List user functions
SHOW USER FUNCTIONS;
+----------------+
|        function|
+----------------+
|default.test_avg|
+----------------+

-- Create Temporary function `test_avg`
CREATE TEMPORARY FUNCTION test_avg AS
    'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';

-- List user functions
SHOW USER FUNCTIONS;
+----------------+
|        function|
+----------------+
|default.test_avg|
|        test_avg|
+----------------+

-- Drop Permanent function
DROP FUNCTION test_avg;

-- Try to drop Permanent function which is not present
DROP FUNCTION test_avg;
Error: Error running query:
org.apache.spark.sql.catalyst.analysis.NoSuchPermanentFunctionException:
Function 'default.test_avg' not found in database 'default'; (state=,code=0)

-- List the functions after dropping, it should list only temporary function
SHOW USER FUNCTIONS;
+--------+
|function|
+--------+
|test_avg|
+--------+
  
-- Drop Temporary function
DROP TEMPORARY FUNCTION IF EXISTS test_avg;

三、DROP TABLE

3.1 描述

DROP TABLE删除表,并从文件系统中删除与表关联的目录(如果表不是EXTERNAL table)。如果表不存在,则抛出异常。如果是外部表,则只从metastore数据库中删除关联的元数据信息。如果表是缓存的,则该命令解除对表及其所有从属项的缓存。

3.2 语法

DROP TABLE [ IF EXISTS ] table_identifier [ PURGE ]

3.3 参数

  • IF EXISTS
    如果指定,则当表不存在时不会引发异常。
  • table_identifier
    指定要删除的表名称。表名称可以选择性地使用数据库名称进行限定。
    语法:[ database_name. ] table_name
  • PURGE
    如果指定,则在删除表时完全清除表跳过trash(注意:在Hive Metastore 0.14.0及更高版本中提供PURGE)。

3.4 例子

-- Assumes a table named `employeetable` exists.
DROP TABLE employeetable;

-- Assumes a table named `employeetable` exists in the `userdb` database
DROP TABLE userdb.employeetable;

-- Assumes a table named `employeetable` does not exist.
-- Throws exception
DROP TABLE employeetable;
Error: org.apache.spark.sql.AnalysisException: Table or view not found: employeetable;
(state=,code=0)

-- Assumes a table named `employeetable` does not exist,Try with IF EXISTS
-- this time it will not throw exception
DROP TABLE IF EXISTS employeetable;

-- Completely purge the table skipping trash.
DROP TABLE employeetable PURGE;

四、DROP VIEW

4.1 描述

DROP VIEW从catalog中删除与指定视图关联的元数据。

4.2 语法

DROP VIEW [ IF EXISTS ] view_identifier

4.3 参数

  • IF EXISTS
    如果指定,则在视图不存在时不会引发异常。
  • view_identifier
    指定要删除的视图名称。视图名称可以选择性地使用数据库名称进行限定。
    语法:[ database_name. ] view_name

4.4 例子

-- Assumes a view named `employeeView` exists.
DROP VIEW employeeView;

-- Assumes a view named `employeeView` exists in the `userdb` database
DROP VIEW userdb.employeeView;

-- Assumes a view named `employeeView` does not exist.
-- Throws exception
DROP VIEW employeeView;
Error: org.apache.spark.sql.AnalysisException: Table or view not found: employeeView;
(state=,code=0)

-- Assumes a view named `employeeView` does not exist,Try with IF EXISTS
-- this time it will not throw exception
DROP VIEW IF EXISTS employeeView;

网站公告

今日签到

点亮在社区的每一天
去签到