日韩性视频-久久久蜜桃-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永久无码国产精品久久 | 裸尼姑熟蜜桃 | 91麻豆一区二区三区 | av爱爱网站 | 蜜桃精品视频 | 杂技xxx裸体xxxx欧美 | 青青欧美 | 国产在线综合网 | 97精品免费视频 | 久久成人视屏 | 男女污污视频在线观看 | 麻豆影音 | 在线观看视频国产 | 成年人网站在线免费观看 | 男性裸体全身精光gay | 2021av在线| 能免费看av的网站 | 在线人成 | 美国一级大黄一片免费中文 | 爱爱激情网 | 欧美精品在线一区二区三区 | 欧美精品1区2区3区 精品成人一区 | 精品影视一区二区 | 禁果av一区二区三区 | 91看片免费看| 色呦呦一区 | 日本国产一区 | 三点尽露的大尺度国产 | 人妻夜夜爽天天爽 | 日韩不卡视频在线观看 | 亚洲国产影视 | 久草超碰在线 | 男男gay羞辱feet贱奴vk | 亚洲综合五区 | 捆绑无遮挡打光屁股调教女仆 | 岛国精品在线 | 日韩av一卡二卡 | 美女黄视频大全 | 91视频国产精品 | 日本黄网站在线观看 | 91插插插插 | 欧美极品在线视频 | 成人国产免费视频 | 福利社区一区二区 | 我要色综合网 | 亚色成人 | aa视频免费观看 | 精品电影一区二区 | 亚洲久久色 | 91婷婷色| 精品国产一 | 免费在线观看黄色网址 | 国产精品白嫩极品美女视频 | 草莓视频18免费观看 | 成人精品免费 | 精品免费在线视频 | 超碰人人人人人人 | 91丨porny丨国产入口 | 麻豆传媒mv| 色综合视频在线 | 麻豆av影院 | 最色成人网 | 人妻少妇精品视频一区二区三区 | 亚洲综合在线网 | 国产91精品一区二区麻豆亚洲 | 丁香色综合 | 日本99视频 | 麻豆免费在线观看视频 | 日本全黄裸体片 | 亚洲mv一区 | 亚洲社区在线观看 | 日韩色黄大片 | 美日韩一级 | 亚洲视频一区在线观看 | 粉色午夜视频 | 偷偷操不一样的久久 | 亚洲成熟毛多妇女av毛片 | 稀缺呦国内精品呦 | 国产三级一区 | 国产精品无码一区二区无人区多人 | 国产精品美女久久久久久久久 | www亚洲天堂 | 破处视频在线观看 | 爱插视频| 国产艳妇疯狂做爰视频 | 国产在线观看一区 | 国产一卡二卡在线播放 | 久久无码视频一区 | 一区二区在线免费观看 | 亚洲中文字幕97久久精品少妇 | 亚洲永久无码精品一区二区 | 免费在线视频一区 | 国产精品福利小视频 | 林由奈在线观看 | 日本成人在线一区 |