日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sparksql删除MySQL数据_Databricks 第6篇:Spark SQL 维护数据库和表

發布時間:2025/4/5 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sparksql删除MySQL数据_Databricks 第6篇:Spark SQL 维护数据库和表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spark SQL 表的命名方式是db_name.table_name,只有數據庫名稱和數據表名稱。如果沒有指定db_name而直接引用table_name,實際上是引用default 數據庫下的表。在Spark SQL中,數據庫只是指定表文件存儲的路徑,每個表都可以使用不同的文件格式來存儲數據,從這個角度來看,可以把database看作是Databricks 表的上層目錄,用于組織數據表及其文件。

在python語言環境中,可以使用 %sql 切換到SQL命令模式:

%sql

一,管理數據庫

常用的數據庫命令,切換當前的數據庫、顯示數據庫列表、表列表、視圖列表和列信息:

use db_nameshow databases

show tables[in db_name]show views[in db_name]show columnsin db_name.table_name

1,創建數據庫

創建數據庫,通過LOCATION 指定數據庫文件存儲的位置:

CREATE { DATABASE | SCHEMA } [IF NOT EXISTS]database_name[LOCATION database_directory]

LOCATION database_directory:指定存儲數據庫文件系統的路徑,如果底層的文件系統中不存在該路徑,那么需要先創建該目錄。如果未指定LOCATION參數,那么使用默認的數據倉庫目錄來創建數據庫,默認的數據倉庫目錄是由靜態配置參數spark.sql.warehouse.dir指定的。

2,查看數據庫的描述

{ DESC | DESCRIBE } DATABASE [EXTENDED] db_name

extended 選項表示查看數據庫的擴展屬性。

3,刪除數據庫

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

IF EXISTS:該選項表示在數據庫不存在時,DROP操作不會引發異常。

RESTRICT:該選項表示不能刪除非空數據庫,并在默認情況下啟用。

CASCADE:該選項表示刪除數據庫中所有關聯的表和函數。

二,創建數據表

表有兩種作用域:全局和本地,全局表可以在所有的Cluster中引用,而本地表只能在本地的Cluster中引用,被稱作臨時視圖。用戶可以從DBFS中的文件或存儲在任何受支持數據源中的數據來填充表。

在創建表時,需要指定存儲表數據的文件格式,以及表數據文件存儲的位置。

1,使用數據源創建表(標準的CREATE TABLE命令)

創建表的語法,注意:如果數據庫中已存在同名的表,則會引發異常。

CREATE TABLE [IF NOT EXISTS][db_name].table_name[( col_name1 col_type1, ... ) ]

USING data_source[OPTIONS ( key1=val1, key2=val2, ... )]

[PARTITIONED BY ( col_name1, col_name2, ... )]

[CLUSTERED BY ( col_name3, col_name4, ... )

[ SORTED BY ( col_name [ ASC | DESC], ... ) ]INTOnum_buckets BUCKETS ][LOCATION path]

[AS select_statement]

參數注釋:

IF NOT EXISTS:如果數據庫中已存在同名的表,則不會執行任何操作。

USING data_source:用于表的文件格式,data_source 必須是 TEXT、CSV、JSON、JDBC、PARQUET、ORC、HIVE、DELTA 或 LIBSVM 中的一個,或 org.apache.spark.sql.sources.DataSourceRegister 的自定義實現的完全限定的類名。支持使用 HIVE 創建 Hive SerDe 表。 你可以使用 OPTIONS 子句指定 Hive 特定的 file_format 和 row_format,這是不區分大小寫的字符串映射。選項鍵為 FILEFORMAT、INPUTFORMAT、OUTPUTFORMAT、SERDE、FIELDDELIM、ESCAPEDELIM、MAPKEYDELIM 和 LINEDELIM。

OPTIONS:用于優化表的行為或配置 HIVE 表的表選項。

PARTITIONED BY (col_name1, col_name2, ...):按指定的列對創建的表進行分區,將為每個分區創建一個目錄。

CLUSTERED BY col_name3, col_name4, ...):按照指定的列,把表中的分區分割到固定數目的 Bucket中,該選項通常與分區操作配合使用。delta格式的文件不支持該子句。

SORTED BY:數據在buckets中的排序方式,默認是升序ASC。

INTO num_buckets BUCKETS:bucket是一個優化技術,使用bucket(和bucket 列)來確定數據的分區,并避免數據洗牌(data shuffle),使數據變得有序。

LOCATION path:用于存儲表數據的目錄,可以指定分布式存儲上的路徑。

AS select_statement:使用來自 SELECT 語句的輸出數據填充該表。

2,使用Delta Lake(增量Lake)創建表

用戶可以使用標準的CREATE TABLE命令來創建存儲在delta lake中的表,除了標準的創建delta table的命令之外,還可以使用以下的語法來創建delta表:

CREATE [OR REPLACE] TABLE table_identifier[(col_name1 col_type1 [NOT NULL], ...)]

USING DELTA[LOCATION ]

table_identifier 有兩種格式:

[database_name.] table_name: 表的名稱

delta.`delta_file_path`:在指定的路徑上創建表,而不在元存儲(metastore)中創建條目。

LOCATION :如果指定的 LOCATION 已包含增量 lake 中存儲的數據,Delta lake 會執行以下操作:

如果僅指定了表名稱和位置,例如:

CREATE TABLEevents

USING DELTA

LOCATION'/mnt/delta/events'

Hive 元存儲中的表會自動繼承現有數據的架構、分區和表屬性,此功能可用于把數據“導入”到元存儲(metastore)中。

如果你指定了任何配置(架構、分區或表屬性),那么 Delta Lake 會驗證指定的內容是否與現有數據的配置完全匹配。如果指定的配置與數據的配置并非完全匹配,則 Delta Lake 會引發一個描述差異的異常。

3,創建表的示例

--Use data source

CREATE TABLE student (id INT, name STRING, age INT) USING PARQUET;--Use data from another table

CREATE TABLEstudent_copy USING PARQUETAS SELECT * FROMstudent;--Omit the USING clause, which uses the default data source (parquet by default)

CREATE TABLE student (id INT, name STRING, age INT);--Create partitioned and bucketed table

CREATE TABLE student (id INT, name STRING, age INT)

USING PARQUET

PARTITIONEDBY(age)CLUSTERED BY (Id) INTO 4 buckets;

三,和數據源的交互

數據源表的作用類似于指向基礎數據源的指針,例如,您可以使用JDBC數據源在Azure Databricks中創建表foo,該表指向MySQL中的表bar。當讀寫表foo時,實際上就是讀寫表bar。

通常,CREATE TABLE會創建一個“指針”,并且必須確保它指向的對象是存在的,一個例外是文件源,例如Parquet,JSON,如果您未指定LOCATION選項,那么Azure Databricks會創建一個默認表位置。

對于CREATE TABLE AS SELECT,Azure Databricks使用select查詢的輸出數據來覆蓋(overwrite)底層的數據源,以確保創建的表包含與輸入查詢完全相同的數據。

四,向表插入數據

用戶可以向表種插入數據,也可以向Spark支持的文件中插入數據。

1,向表中插入數據

使用INSERT INTO 命令向表中追加數據,不會影響表中的現有數據;使用INSERT OVERWRITE 命令,會覆蓋表中的現有數據。

INSERT INTO [TABLE] table_identifier [partition_spec]{VALUES ( { value | NULL } [, ...] ) [, ( ... )] |query }INSERT OVERWRITE [TABLE] table_identifier [partition_spec [ IF NOT EXISTS]]

{VALUES ( { value | NULL } [, ...] ) [, ( ... )] | query }

參數注釋:

table_identifier:[database_name.] table_name:表名稱,可選擇使用數據庫名稱進行限定。delta. :現有增量表的位置。

partition_spec:一個可選參數,用于指定分區的鍵/值對的逗號分隔列表。語法:PARTITION ( partition_col_name = partition_col_val [ , ... ] )

值 ( {value |NULL} [,...] ) [, ( ... ) ]:要插入的值。 顯式指定的值或 NULL 。 使用逗號分隔子句中的每個值。 您可以指定多個值集來插入多個行。

query:生成要插入的行的查詢,可用的查詢格式:SELECT語句、TABLE語句、FROM語句

舉個例子,創建表之后,通過VALUES子句向表中插入少量的值,也可以通過 SELECT 子句、TABLE和FROM向表中批量插入數據。

CREATE TABLE students (name VARCHAR(64), address VARCHAR(64), student_id INT)

USING PARQUET PARTITIONEDBY(student_id);--VALUES

INSERT INTO students VALUES('Bob Brown', '456 Taylor St, Cupertino', 222222),

('Cathy Johnson', '789 Race Ave, Palo Alto', 333333);--SELECT

INSERT INTO students PARTITION (student_id = 444444)SELECT name, address FROM persons WHERE name ="Dora Williams";--TABLE

INSERT INTO students TABLEvisiting_students;--FROM

INSERT INTOstudentsFROM applicants SELECT name, address, id applicants WHERE qualified = true;

2,向文件中插入數據

使用給定的Spark文件格式用新值覆蓋目錄中的現有數據,也就是說,向目錄中插入數據時,只能用新數據覆蓋現有的數據:

INSERT OVERWRITE [LOCAL] DIRECTORY [directory_path]USING file_format[OPTIONS ( key = val [ , ...]) ]

{VALUES ( { value | NULL } [, ...] ) [, ( ... )] | query }

參數注釋:

directory_path:目標目錄,還可以使用在中指定 OPTIONS path 。 LOCAL關鍵字用于指定目錄位于本地文件系統中。

file_format:要用于插入的文件格式。 有效選項包括 TEXT 、 CSV 、 JSON 、 JDBC 、 PARQUET 、ORC、HIVE、LIBSVM,或者自定義實現的完全限定類名 org.apache.spark.sql.execution.datasources.FileFormat 。

OPTIONS ( key = val [,...] ):指定用于寫入文件格式的一個或多個選項。

示例,使用新數據覆蓋目錄中的數據:

INSERT OVERWRITE DIRECTORY '/tmp/destination'USING parquet

OPTIONS (col11, col2 2, col3 'test')SELECT * FROMtest_table;INSERTOVERWRITE DIRECTORY

USING parquet

OPTIONS ('path' '/tmp/destination', col1 1, col2 2, col3 'test')SELECT * FROM test_table;

參考文檔:

總結

以上是生活随笔為你收集整理的sparksql删除MySQL数据_Databricks 第6篇:Spark SQL 维护数据库和表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九色国产视频 | 精品人妻一区二区三区浪潮在线 | 午夜免费小视频 | 国产成人在线观看网站 | 中文字幕无码精品亚洲 | 奶水旺盛的女人伦理 | 色婷婷视频在线 | 免费看黄色网址 | 免费网站av | 呦女精品 | 又粗又猛又爽又黄的视频 | 亚洲欧美另类自拍 | 99热这里只有精品2 91免费版黄 | 久久av一区二区三区亚洲 | 不卡视频在线观看 | 国产日韩一区 | 日本成人黄色片 | 久久久久亚洲av无码专区 | 怡红院男人的天堂 | 亚洲精品在 | 国产第一福利影院 | sm在线看 | 五个女闺蜜把我玩到尿失禁 | 天堂视频一区 | 777精品伊人久久久久大香线蕉 | 人人人妻人人澡人人爽欧美一区 | 四虎av在线 | 超碰中文字幕在线 | 一级香蕉视频在线观看 | 日日夜夜免费 | 草草影院av| 黄视频网站在线看 | 毛片少妇| 18成人免费观看视频 | 天堂影院一区二区 | 17c在线观看视频 | 97国产精品久久 | 成人免费毛片男人用品 | 美女一区二区视频 | 欧美精品在线一区 | 黄色一级免费看 | www日本在线观看 | 日日操日日干 | 欧美色图小说 | 成人午夜黄色 | 欧美特黄aaa| 国产免费黄色大片 | 国产黄色av | 国产一区二区h | 亚洲高清在线观看 | 国产男女猛烈无遮挡免费视频动漫 | 中文字幕码精品视频网站 | 97视频网址 | 精品黄色 | 99精品久久久久久久婷婷 | 97人妻精品一区二区三区免 | 色婷婷婷婷色 | 国产精品一区在线观看你懂的 | 久久久久久伊人 | 亚洲第一视频在线观看 | 亚洲欧洲无码一区二区三区 | 欧美日韩不卡视频 | 亚洲精品社区 | 亚洲高清视频免费观看 | 国产成人在线观看网站 | 丰满护士巨好爽好大乳 | 国产黄色的视频 | 国产av天堂无码一区二区三区 | 靠逼动漫 | 欧美一级精品 | 一本久道综合色婷婷五月 | 精品爆乳一区二区三区无码av | 91黄视频在线观看 | 91久久精品日日躁夜夜躁国产 | 999热精品视频 | 成人黄色免费观看 | 51精品国产人成在线观看 | 熟妇高潮一区二区三区在线播放 | 91亚洲欧美| 亚洲国产高清视频 | 亚洲一二区在线 | 国产欧美日韩高清 | 国产一二精品 | 亚洲高清毛片一区二区 | 久久精品国产露脸对白 | 久久夜色精品 | 尤物毛片| av黄色免费网站 | 天天综合精品 | 日本电影大尺度免费观看 | 亚洲色中色 | 精品日韩中文字幕 | 亚洲国产精品成人综合在线 | 日本精品久久久久 | 谁有免费黄色网址 | 奇米久久久 | 国产成人aⅴ | 天天躁日日躁狠狠躁喷水 | 欧美精品在线一区二区三区 |