国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【大數(shù)據(jù)】Presto(Trino)配置參數(shù)以及 SQL語法

這篇具有很好參考價值的文章主要介紹了【大數(shù)據(jù)】Presto(Trino)配置參數(shù)以及 SQL語法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、概述

Trino (前身為PrestoSQL)是一款高性能,分布式的SQL查詢引擎,可以用于查詢各種類型的數(shù)據(jù)存儲,包括Hive、Mysql、Elasticsearch、KafkaPostgreSQL等。在使用Trino時,可以通過一些參數(shù)來控制查詢的行為,例如:

  • coordinator節(jié)點(diǎn)和worker節(jié)點(diǎn)的數(shù)量: 這兩個參數(shù)控制了Trino集群中管理查詢的節(jié)點(diǎn)數(shù)量,它們的配合調(diào)整可以影響整個集群的查詢效率。

  • memorycpu的分配: 這些參數(shù)控制了Trino在查詢和計(jì)算時使用的內(nèi)存和CPU數(shù)量??梢愿鶕?jù)集群的實(shí)際硬件情況和查詢工作負(fù)載來靈活配置。

  • join分布式:控制join關(guān)鍵字的使用。join分布式是一種優(yōu)化策略,在大規(guī)模數(shù)據(jù)集上運(yùn)行的查詢中處理join操作非常簡單。

  • 指定數(shù)據(jù)源:可以使用catalogschema(數(shù)據(jù)庫)兩個關(guān)鍵字指定Trino查詢的數(shù)據(jù)源。

  • 分區(qū)和bucket表的查詢: 分區(qū)表是對表進(jìn)行分區(qū)和拆分的一種方式,通過分區(qū)表查詢只需掃描相應(yīng)分區(qū),提高了查詢效率。bucket表是一種將數(shù)據(jù)分散在多個桶中的表格,它們可以通過桶數(shù)對數(shù)據(jù)進(jìn)行分片,并行化查詢操作,從而提高查詢性能。

Trino官方文檔:https://trino.io/docs/current/

關(guān)于更多的Presto介紹可以參考我這篇文章:大數(shù)據(jù)Hadoop之——基于內(nèi)存型SQL查詢引擎Presto(Presto-Trino環(huán)境部署)

【大數(shù)據(jù)】Presto(Trino)配置參數(shù)以及 SQL語法

二、Trino coordinator 和 worker 節(jié)點(diǎn)作用

1)Trino coordinator 節(jié)點(diǎn)作用

在Trino中,coordinator節(jié)點(diǎn)是整個集群的管理節(jié)點(diǎn),它的作用包括:

  • 查詢協(xié)調(diào):coordinator節(jié)點(diǎn)負(fù)責(zé)協(xié)調(diào)所有查詢操作,如解析sql語句、生成查詢計(jì)劃、調(diào)度和分配查詢?nèi)蝿?wù)等。它會根據(jù)查詢的復(fù)雜度和數(shù)據(jù)源的規(guī)模來判斷查詢是否需要被分割和并行執(zhí)行,以提高查詢效率和資源利用率。

  • 資源管理:coordinator節(jié)點(diǎn)負(fù)責(zé)管理整個集群的資源,如內(nèi)存、CPU等。它會根據(jù)每個查詢的資源需求和集群的可用資源情況來動態(tài)調(diào)整資源使用情況,以保證集群的穩(wěn)定性和性能。

  • 節(jié)點(diǎn)管理:coordinator節(jié)點(diǎn)負(fù)責(zé)管理集群的所有worker節(jié)點(diǎn),包括狀態(tài)更新、任務(wù)分配、心跳檢測等。它會監(jiān)測節(jié)點(diǎn)的可用性和狀態(tài),并根據(jù)集群負(fù)載情況來動態(tài)調(diào)整節(jié)點(diǎn)的任務(wù)分配和負(fù)載平衡策略,以保證整個集群的穩(wěn)定性和可用性。

  • 集群監(jiān)控:coordinator節(jié)點(diǎn)負(fù)責(zé)監(jiān)控整個集群的運(yùn)行狀況,包括各個節(jié)點(diǎn)的狀態(tài)、負(fù)載情況、查詢性能等。它會將這些信息進(jìn)行匯總和分析,并生成相應(yīng)的報(bào)告和指標(biāo),以便管理員進(jìn)行集群的優(yōu)化和調(diào)整。

  • 系統(tǒng)管理:coordinator節(jié)點(diǎn)負(fù)責(zé)管理整個Trino系統(tǒng),包括配置文件管理、插件管理、安全管理等。它會根據(jù)管理員的設(shè)定和權(quán)限來進(jìn)行相應(yīng)的管理和控制,以保證整個系統(tǒng)的穩(wěn)定性和安全性。

因此,可以看出coordinator節(jié)點(diǎn)在Trino集群中起到了至關(guān)重要的作用,它是整個集群的大腦和控制中心。為了保證集群的性能和可用性,建議對coordinator節(jié)點(diǎn)進(jìn)行適當(dāng)?shù)呐渲煤凸芾?,以滿足查詢復(fù)雜度和數(shù)據(jù)量的需求。

2)Trino worker 節(jié)點(diǎn)作用

在Trino中,worker節(jié)點(diǎn)是集群中執(zhí)行任務(wù)的節(jié)點(diǎn)。它的作用包括:

  • 任務(wù)執(zhí)行:worker節(jié)點(diǎn)負(fù)責(zé)執(zhí)行coordinator分配給它的任務(wù),如數(shù)據(jù)讀取、數(shù)據(jù)過濾、數(shù)據(jù)聚合等。它會將數(shù)據(jù)處理的結(jié)果返回給coordinator節(jié)點(diǎn),以便進(jìn)行下一步的處理和計(jì)算。

  • 數(shù)據(jù)存儲:worker節(jié)點(diǎn)負(fù)責(zé)存儲集群中的數(shù)據(jù),包括數(shù)據(jù)的分片、存儲和管理等。它會維護(hù)一個數(shù)據(jù)存儲倉庫,并根據(jù)查詢計(jì)劃和任務(wù)分配來讀取和處理數(shù)據(jù),以提高查詢效率和資源利用率。

  • 資源管理:worker節(jié)點(diǎn)會根據(jù)集群的資源限制和任務(wù)優(yōu)先級,動態(tài)調(diào)整資源的分配和使用情況,以保證集群的穩(wěn)定性和性能。

  • 網(wǎng)絡(luò)通信:worker節(jié)點(diǎn)負(fù)責(zé)與coordinator節(jié)點(diǎn)進(jìn)行通信,并根據(jù)分配的任務(wù)來讀取和處理數(shù)據(jù)。它需要保證和coordinator節(jié)點(diǎn)的通信暢通,并及時反饋處理結(jié)果。

因此,可以看出worker節(jié)點(diǎn)在Trino集群中扮演了至關(guān)重要的角色,它是整個集群的工作機(jī)器和數(shù)據(jù)存儲倉庫。為了保證集群的性能和可用性,建議對worker節(jié)點(diǎn)進(jìn)行適當(dāng)?shù)呐渲煤凸芾?,以滿足查詢和數(shù)據(jù)處理的需求。同時,建議用戶根據(jù)自己的業(yè)務(wù)需求和數(shù)據(jù)量來增加或降低worker節(jié)點(diǎn)的數(shù)量和配置,以達(dá)到最佳的資源利用率和查詢效率。

三、Trino 參數(shù)詳細(xì)講解

1)coordinator 節(jié)點(diǎn)配置

1、config.properties 配置文件

config.properties是Trino服務(wù)器的配置文件,它包含了Trino服務(wù)器的各種配置選項(xiàng),如節(jié)點(diǎn)配置、查詢優(yōu)化器配置、內(nèi)存和CPU配置、集群安全配置等。下面是幾個常見的config.properties選項(xiàng):

  • coordinator=true/false:配置當(dāng)前節(jié)點(diǎn)是否為coordinator節(jié)點(diǎn)。

  • node-scheduler.include-coordinator:是Trino協(xié)調(diào)節(jié)點(diǎn)(coordinator)的配置參數(shù)之一,用于控制調(diào)度器是否包括協(xié)調(diào)節(jié)點(diǎn)自身作為可用的執(zhí)行節(jié)點(diǎn)。默認(rèn)情況下,node-scheduler.include-coordinator 的值為 true,即協(xié)調(diào)節(jié)點(diǎn)被視為可用的執(zhí)行節(jié)點(diǎn)。

  • task.max-memory-per-node:該參數(shù)用于設(shè)置每個工作節(jié)點(diǎn)上單個任務(wù)(task)可使用的最大內(nèi)存量。它定義了每個任務(wù)在工作節(jié)點(diǎn)上可以使用的最大內(nèi)存量。單位可以是字節(jié)(B)、千字節(jié)(KB)、兆字節(jié)(MB)、千兆字節(jié)(GB)或太字節(jié)(TB)。

  • query.max-memory:這個參數(shù)設(shè)置了每個查詢可使用的最大內(nèi)存量。它控制著整個查詢在所有工作節(jié)點(diǎn)上可以使用的總內(nèi)存量。當(dāng)查詢需要的內(nèi)存超過這個限制時,Trino將拋出內(nèi)存不足的錯誤。

  • query.max-memory-per-node:此參數(shù)定義了每個工作節(jié)點(diǎn)可使用的最大內(nèi)存量。它限制了單個查詢在單個工作節(jié)點(diǎn)上可以使用的最大內(nèi)存量。當(dāng)單個任務(wù)需要的內(nèi)存超過此限制時,Trino將啟動其他任務(wù)以利用其他工作節(jié)點(diǎn)上的內(nèi)存。

  • query.max-total-memory-per-node: 該參數(shù)限制了每個工作節(jié)點(diǎn)可使用的最大總內(nèi)存量。它控制著所有正在運(yùn)行的查詢在單個工作節(jié)點(diǎn)上可以使用的總內(nèi)存量。當(dāng)工作節(jié)點(diǎn)上的查詢總內(nèi)存使用超過此限制時,Trino將拒絕新的查詢請求。

  • memory.heap-headroom-per-node:用來配置Trino worker節(jié)點(diǎn)的Java堆空間余量的選項(xiàng)。它指定了每個worker節(jié)點(diǎn)JVM堆中保留的額外內(nèi)存空間的大小,用于處理臨時內(nèi)存和查詢的內(nèi)存需求。默認(rèn)情況下,memory.heap-headroom-per-node的值是0。這意味著Trino使用默認(rèn)的Java Heap內(nèi)存分配策略來處理內(nèi)存,并盡可能避免OOM(內(nèi)存不足)錯誤。

  • query.max-run-time:配置每個查詢的最大運(yùn)行時間,防止查詢太復(fù)雜導(dǎo)致資源耗盡。

  • http-server.http.port=8080:配置http服務(wù)器的端口號。

  • query.results.max-age=1m:配置查詢結(jié)果在內(nèi)存中的最大保存時間,防止浪費(fèi)內(nèi)存。

  • query.priority=1:配置查詢的優(yōu)先級,以便coordinator節(jié)點(diǎn)調(diào)度任務(wù)。

  • exchange.client-threads=2:配置worker節(jié)點(diǎn)與coordinator節(jié)點(diǎn)之間數(shù)據(jù)交換的線程數(shù)量,以提高網(wǎng)絡(luò)通信效率。

  • plugin.<plugin-name>.<option>=<value>:配置插件選項(xiàng)和值,以擴(kuò)展Trino的功能和支持新的數(shù)據(jù)源。

因此,config.properties文件對于Trino服務(wù)器的性能和功能都具有重要的作用,建議管理員和用戶仔細(xì)查閱和配置。同時,可以根據(jù)業(yè)務(wù)需求和系統(tǒng)資源情況來適當(dāng)調(diào)整其中的選項(xiàng),以達(dá)到最佳的性能和效率。

示例配置如下:

###################################
## 協(xié)調(diào)節(jié)點(diǎn)配置
###################################
coordinator=true

###################################
## HTTP服務(wù)配置
###################################

http-server.http.port=8080

###################################
## 內(nèi)存配置
###################################

query.max-memory=5GB
query.max-memory-per-node=2GB
query.max-total-memory-per-node=10GB

###################################
## 發(fā)現(xiàn)服務(wù)配置
###################################

discovery-server.enabled=true
discovery.uri=http://localhost:8080

###################################
## 插件配置
###################################

plugin.myplugin.property=value

###################################
## 其他配置
###################################

# 身份驗(yàn)證配置
http-server.authentication.type=PASSWORD
http-server.authentication.password-user-mapping-file=etc/password-authenticator.properties

# 授權(quán)配置
access-control.name=my-access-control
access-control.config-file=etc/access-control.properties

# 元數(shù)據(jù)存儲配置
metadata.store.type=jdbc
metadata.store.jdbc-url=jdbc:postgresql://localhost:5432/trino_metadata
metadata.store.username=trino
metadata.store.password=secret

# 集群配置
discovery-server.enabled=true
discovery.uri=http://localhost:8080
node-scheduler.include-coordinator=true

# 指標(biāo)和監(jiān)控配置
metrics.enabled=true
metrics.reporting-interval=1m
metrics.store.type=prometheus
metrics.store.reporters=prometheus
metrics.store.prometheus.uri=http://localhost:9090/metrics
2、jvm.config 配置文件

Trino協(xié)調(diào)節(jié)點(diǎn)(coordinator)的JVM配置文件是 jvm.config。它位于Trino安裝目錄的 etc 文件夾中。

jvm.config 文件用于配置協(xié)調(diào)節(jié)點(diǎn)的Java虛擬機(jī)(JVM)參數(shù),以控制內(nèi)存、垃圾回收、線程等方面的行為。

一些常用的JVM參數(shù)及其含義:

-server:啟用服務(wù)器模式,優(yōu)化性能。
-Xmx8G:設(shè)置Java堆的最大內(nèi)存為8GB。最好是配置小于32G。
-XX:+UseG1GC:啟用G1垃圾收集器。
-XX:InitialRAMPercentage:是一個Java虛擬機(jī)(JVM)參數(shù),用于設(shè)置初始堆內(nèi)存的百分比。它指定了初始堆內(nèi)存大小相對于可用系統(tǒng)內(nèi)存的比例。默認(rèn)值為64,表示JVM將會使用可用系統(tǒng)內(nèi)存的64%。

`-XX:InitialRAMPercentage` 該參數(shù)通常與`-Xmx`(最大堆內(nèi)存)參數(shù)一起使用,以確保在應(yīng)用程序啟動時分配足夠的初始堆內(nèi)存。

-XX:InitialRAMPercentage 和 -Xmx 都是用于配置Java虛擬機(jī)(JVM)的堆內(nèi)存參數(shù)。下面是一個示例配置和相應(yīng)的換算示例:

-XX:InitialRAMPercentage=25
-Xmx8G

假設(shè)可用系統(tǒng)內(nèi)存為16GB(Gigabytes),我們將根據(jù)配置計(jì)算初始堆內(nèi)存和最大堆內(nèi)存的大小。

首先,我們使用 -XX:InitialRAMPercentage 參數(shù)來計(jì)算初始堆內(nèi)存的大?。?
初始堆內(nèi)存大小 = 可用系統(tǒng)內(nèi)存 * (InitialRAMPercentage / 100)

初始堆內(nèi)存大小 = 16GB * (25 / 100) = 4GB

接下來,我們使用 -Xmx 參數(shù)來指定最大堆內(nèi)存的大小,這里設(shè)置為8GB。

因此,根據(jù)以上配置和換算示例,初始堆內(nèi)存將為4GB,最大堆內(nèi)存將為8GB。

請注意,確保根據(jù)實(shí)際系統(tǒng)內(nèi)存大小和應(yīng)用程序的內(nèi)存需求進(jìn)行適當(dāng)?shù)恼{(diào)整。對于初始堆內(nèi)存和最大堆內(nèi)存,建議根據(jù)應(yīng)用程序的性能需求進(jìn)行合理配置,以確保充分利用系統(tǒng)資源并避免內(nèi)存不足或浪費(fèi)的情況。

此外,-XX:InitialRAMPercentage 和 -Xmx 參數(shù)的可用性和行為可能因JVM的版本和廠商而有所不同。請參考所使用JVM的文檔以獲取準(zhǔn)確的信息。
  • -XX:MaxRAMPercentage:是一個JVM參數(shù),用于指定JVM使用系統(tǒng)內(nèi)存的最大百分比。這個參數(shù)可以被用于Trino和其他Java應(yīng)用程序。它的默認(rèn)值64,表示JVM將最大使用可用系統(tǒng)內(nèi)存的64%。例如,如果系統(tǒng)有16GB內(nèi)存可用,則默認(rèn)情況下JVM將使用10.24GB內(nèi)存。

  • -XX:MaxRAMPercentage:是一個JVM參數(shù),用于控制G1垃圾收集器中堆區(qū)域的大小。G1垃圾收集器是Java SE 9及更高版本中使用的一種高效的垃圾收集器,可以用于Trino和其他Java應(yīng)用程序。堆區(qū)域是G1垃圾收集器中內(nèi)存分配的最小單位。這個參數(shù)的默認(rèn)值堆大小除以2048,最小值是1MB,最大值是32MB。這意味著如果堆大小是8GB,則每個堆區(qū)域的默認(rèn)大小是4MB。

  • -XX:+ExplicitGCInvokesConcurrent:是一個JVM參數(shù),用于啟用顯式垃圾回收調(diào)用時并發(fā)處理的垃圾收集器。在此模式下,會在發(fā)出垃圾回收調(diào)用時,同時運(yùn)行一個并發(fā)垃圾收集器,以優(yōu)化程序的性能。

  • -XX:+ExitOnOutOfMemoryError:是一個JVM參數(shù),用于在發(fā)生OutOfMemoryError錯誤時自動退出JVM。OutOfMemoryError指的是Java程序中無法分配足夠的內(nèi)存的情況。默認(rèn)情況下,JVM在發(fā)生OutOfMemoryError時不會終止。如果您使用這個參數(shù),則JVM將在發(fā)生OutOfMemoryError時立即退出,從而防止程序繼續(xù)運(yùn)行并進(jìn)一步損壞數(shù)據(jù)或系統(tǒng)。

  • -XX:-OmitStackTraceInFastThrow:是一個JVM參數(shù),用于在Java程序中啟用錯誤堆棧跟蹤提示。通常,當(dāng)Java程序中發(fā)生異?;蝈e誤時,系統(tǒng)會生成一個堆棧跟蹤提示來告訴您程序執(zhí)行過程中出現(xiàn)了哪些錯誤。默認(rèn)情況下,當(dāng)程序中的代碼中發(fā)生快速失敗時,JVM會省略異常堆棧跟蹤提示,以提高程序的性能。這意味著,當(dāng)程序出現(xiàn)錯誤時,您可能無法輕松地DEBUG并查找到底發(fā)生了什么錯誤。

  • -XX:ReservedCodeCacheSize:是一個JVM參數(shù),用于設(shè)置JIT編譯器代碼緩存的最大大小。默認(rèn)情況下,JIT編譯器會將編譯過的代碼存放在代碼緩存中,以加速程序的后續(xù)執(zhí)行。然而,如果緩存大小不夠,JIT編譯器可能會不得不丟棄部分編譯過的代碼,這會導(dǎo)致程序性能下降。

  • -XX:PerMethodRecompilationCutoff:是一個Java虛擬機(jī)(JVM)的參數(shù),用于設(shè)置方法重新編譯的閾值。它指定了一個方法在執(zhí)行多少次之后需要重新編譯。該參數(shù)的值通常是一個正整數(shù),默認(rèn)值15000。

  • -XX:PerBytecodeRecompilationCutoff:是一個Java虛擬機(jī)(JVM)的參數(shù),用于設(shè)置字節(jié)碼重新編譯的閾值。它指定了一個方法的字節(jié)碼在執(zhí)行多少次之后需要重新編譯。該參數(shù)的值通常是一個正整數(shù),默認(rèn)值10000

  • -Djdk.attach.allowAttachSelf 是一個Java系統(tǒng)屬性,用于允許Java進(jìn)程自己附加到自己。該屬性通常用于啟用Java程序自我監(jiān)視和調(diào)試的功能。默認(rèn)情況下,此屬性被設(shè)置為"false",禁止Java進(jìn)程附加到自身。要允許Java進(jìn)程附加到自身,需要將該屬性設(shè)置為"true"。

  • -Djdk.nio.maxCachedBufferSize:是一個Java系統(tǒng)屬性,用于設(shè)置NIO緩沖區(qū)的最大緩存大小。NIO(New I/O)是Java提供的一種高性能I/O操作方式。該屬性指定了NIO緩沖區(qū)在緩存中的最大大小。默認(rèn)情況下,該屬性未設(shè)置,使用JVM內(nèi)部的默認(rèn)值??梢酝ㄟ^設(shè)置該屬性為一個正整數(shù)值來限制NIO緩沖區(qū)的最大緩存大小,以控制內(nèi)存的使用。默認(rèn)值取決于 Java 運(yùn)行時環(huán)境的版本。在 Java 8 及之前的版本中默認(rèn)值-1,表示不限制 NIO 緩沖區(qū)的最大緩存大小。而在 Java 9 及以后的版本中,默認(rèn)值為 0,表示禁用 NIO 緩沖區(qū)的緩存,即不進(jìn)行緩存。

  • -XX:+UnlockDiagnosticVMOptions:是一個 Java 虛擬機(jī)(JVM)選項(xiàng),用于解鎖診斷性 VM 選項(xiàng)。默認(rèn)情況下,JVM 中的某些診斷功能是被禁用的,通過使用該選項(xiàng),可以解鎖并啟用這些診斷功能。這個選項(xiàng)通常用于開發(fā)和調(diào)試目的。

  • -XX:+UseAESCTRIntrinsics:是一個 Java 虛擬機(jī)(JVM)選項(xiàng),用于啟用AES-CTR加密算法的硬件優(yōu)化。當(dāng)該選項(xiàng)被啟用時,JVM會嘗試使用CPU的AES指令集來執(zhí)行AES-CTR操作,以提高加密和解密的性能。

  • -XX:-G1UsePreventiveGC:是一個 Java 虛擬機(jī)(JVM)選項(xiàng),用于禁用 G1 垃圾收集器的預(yù)防性垃圾回收(Preventive GC)機(jī)制。預(yù)防性垃圾回收是 G1 垃圾收集器的一項(xiàng)特性,旨在在堆內(nèi)存使用率較低時主動觸發(fā)垃圾回收,以避免堆內(nèi)存達(dá)到極限。

這個選項(xiàng)通常用于開發(fā)和
以下是一個示例的 jvm.config 配置文件:

-server
-Xmx2G
-XX:InitialRAMPercentage=20
-XX:MaxRAMPercentage=80
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAESCTRIntrinsics
# Disable Preventive GC for performance reasons (JDK-8293861)
-XX:-G1UsePreventiveGC

請注意,具體的配置取決于您的硬件資源、工作負(fù)載和性能需求。您可以根據(jù)您的具體情況來調(diào)整和優(yōu)化JVM參數(shù)。

3、log.properties 配置文件
# 設(shè)置日志級別,有四個級別:DEBUG, INFO, WARN and ERROR
io.trino=INFO
4、node.properties 配置文件
# 環(huán)境的名字。集群中所有的Trino節(jié)點(diǎn)必須具有相同的環(huán)境名稱。
node.environment=production
# 此Trino安裝的唯一標(biāo)識符。這對于每個節(jié)點(diǎn)都必須是唯一的,不填則是隨機(jī)的。
node.id=trino-coordinator
# 數(shù)據(jù)目錄的位置(文件系統(tǒng)路徑)。Trino在這里存儲日志和其他數(shù)據(jù)。
node.data-dir=/opt/apache/trino/data

2)worker 節(jié)點(diǎn)配置

1、config.properties 配置文件

以下是一個Trino工作節(jié)點(diǎn)的配置文件示例config.properties,用于配置工作節(jié)點(diǎn)的基本設(shè)置,包括通信、內(nèi)存、線程池以及插件等。

coordinator=false
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=10GB
query.max-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://<your-coordinator-node-hostname>:8080
exchange.http-client.keep-alive-interval=5m
exchange.http-client.idle-timeout=10m
task.concurrency=16
task.writer-count=4
jvm.configured-initial-ram-percent=80
memory.heap-headroom-per-node=1GB

以下是示例配置文件中的各項(xiàng)設(shè)置的含義:

  • coordinator=false:設(shè)置當(dāng)前節(jié)點(diǎn)為工作節(jié)點(diǎn)而非協(xié)調(diào)器節(jié)點(diǎn)。

  • node-scheduler.include-coordinator=false:用于決定協(xié)調(diào)器節(jié)點(diǎn)是否應(yīng)該納入查詢計(jì)算資源的調(diào)度范圍。當(dāng)該參數(shù)設(shè)置為true時,協(xié)調(diào)器節(jié)點(diǎn)可以作為一個普通的計(jì)算節(jié)點(diǎn)來執(zhí)行查詢,從而幫助處理計(jì)算負(fù)載。當(dāng)設(shè)置false,這將確保協(xié)調(diào)器節(jié)點(diǎn)不會執(zhí)行查詢,從而避免了性能瓶頸問題,一般是設(shè)置false,禁用協(xié)調(diào)節(jié)點(diǎn)又充當(dāng)worker節(jié)點(diǎn)使用。

  • http-server.http.port=8080:HTTP服務(wù)器監(jiān)聽的端口號,用于接收REST API請求。

  • query.max-memory=10GB:單個查詢可用的最大內(nèi)存數(shù)量。

- query.max-memory-per-node=2GB:單個工作節(jié)點(diǎn)可用于執(zhí)行查詢的最大內(nèi)存數(shù)量。

  • discovery-server.enabled=true:啟用節(jié)點(diǎn)發(fā)現(xiàn)服務(wù)器,用于協(xié)調(diào) Trino 群集中的各個節(jié)點(diǎn)。

  • discovery.uri=http://<your-coordinator-node-hostname>:8080:發(fā)現(xiàn)服務(wù)器節(jié)點(diǎn)的URL。

  • exchange.http-client.keep-alive-interval=5m:控制通信時,HTTP客戶端保持活動狀態(tài)的時間。

  • exchange.http-client.idle-timeout=10m:當(dāng)HTTP客戶端處于空閑狀態(tài)時,客戶端關(guān)閉連接之前保持空閑的時間量。

  • task.concurrency=16:在工作節(jié)點(diǎn)上同時執(zhí)行的最大任務(wù)數(shù)。

  • task.writer-count=4:在工作節(jié)點(diǎn)上同時寫入數(shù)據(jù)的最大任務(wù)數(shù)。

  • jvm.configured-initial-ram-percent=80:JVM初始堆大小作為RAM百分比的設(shè)置。

  • memory.heap-headroom-per-node=1GB:為Trino查詢準(zhǔn)備的每個節(jié)點(diǎn)之外的堆剩余空間。

請注意,這只是一個示例配置,您可以根據(jù)您自己的需求進(jìn)行修改。有關(guān)更多配置參數(shù)和詳細(xì)信息,請參閱官方文檔:https://trino.io/docs/current/installation/deployment.html。

2、jvm.config 配置文件

下面是一個Trino工作節(jié)點(diǎn)的jvm.config示例配置文件,它包含了一些常用的JVM參數(shù),可以幫助你優(yōu)化Trino的性能和內(nèi)存利用率:

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=16M
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ErrorFile=/var/log/trino/hs_err_pid%p.log
-Djava.library.path=/usr/lib/hadoop/lib/native
-Djdk.attach.allowAttachSelf=true

這里是每個參數(shù)的含義:

  • -server: 使用JVM的服務(wù)模式,通常是用于長時間運(yùn)行的應(yīng)用程序。
  • -Xmx16G: 設(shè)置JVM可用的最大堆內(nèi)存為16GB。
  • -XX:+UseG1GC: 啟用G1垃圾回收器。
  • -XX:G1HeapRegionSize=16M: 設(shè)置G1 GC的堆區(qū)域大小為16MB。
  • -XX:+HeapDumpOnOutOfMemoryError: 在內(nèi)存溢出時生成堆內(nèi)存轉(zhuǎn)儲文件。
  • -XX:OnOutOfMemoryError=kill -9 %p: 在內(nèi)存溢出時強(qiáng)制殺死Trino進(jìn)程。
  • -XX:ErrorFile=/var/log/trino/hs_err_pid%p.log: 將JVM錯誤信息輸出到指定的錯誤文件中。
  • -XX:+ExplicitGCInvokesConcurrent: 啟用顯式垃圾回收操作。
  • -Djava.library.path=/usr/lib/hadoop/lib/native: 指定Hadoop本機(jī)庫的路徑。
  • -Djdk.attach.allowAttachSelf=true: 允許JVM附加到它自己的進(jìn)程,有助于診斷和調(diào)試。

這只是一個基礎(chǔ)配置文件,用戶可以根據(jù)各自的需求和系統(tǒng)資源狀況進(jìn)行微調(diào)。同時需要注意的是,在配置JVM參數(shù)時,一定要謹(jǐn)慎,了解每個參數(shù)的含義和影響,并進(jìn)行適當(dāng)?shù)臏y試和調(diào)優(yōu),以確保系統(tǒng)的穩(wěn)定性和性能。

3、log.properties 配置文件
# 設(shè)置日志級別,有四個級別:DEBUG, INFO, WARN and ERROR
io.trino=INFO
4、node.properties 配置文件
# 環(huán)境的名字。集群中所有的Trino節(jié)點(diǎn)必須具有相同的環(huán)境名稱。
node.environment=production
# 此Trino安裝的唯一標(biāo)識符。這對于每個節(jié)點(diǎn)都必須是唯一的,不填則是隨機(jī)的。
node.id=trino-worker-1
# 數(shù)據(jù)目錄的位置(文件系統(tǒng)路徑)。Trino在這里存儲日志和其他數(shù)據(jù)。
node.data-dir=/opt/apache/trino/data

四、環(huán)境準(zhǔn)備

如已經(jīng)有環(huán)境了,可以忽略,如想快熟部署Presto(Trino)環(huán)境可參考我這篇文章:【大數(shù)據(jù)】通過 docker-compose 快速部署 Presto(Trino)保姆級教程

docker exec -it trino-coordinator bash

# --catalog:數(shù)據(jù)源 --schema:數(shù)據(jù)庫
${TRINO_HOME}/bin/trino-cli --server http://trino-coordinator:8080 --user=hadoop

五、Trino 中的 數(shù)據(jù)源(catalog)

在Trino中,catalog是一種用于管理數(shù)據(jù)連接和數(shù)據(jù)源的概念。一個catalog可以代表一個數(shù)據(jù)庫、一個hive實(shí)例、或者其他支持的數(shù)據(jù)源。Trino可以通過啟用不同的catalog來連接和查詢不同的數(shù)據(jù)源,這樣你就可以使用一個Trino集群查詢多個數(shù)據(jù)源中的數(shù)據(jù),而不需要使用不同的工具和語言進(jìn)行查詢。

Trino中支持的catalog包括:

系統(tǒng)catalog:包括system、memory、information_schema和metadata,用于管理和查詢Trino系統(tǒng)和運(yùn)行時信息。

  • Hive catalog:用于連接處理Hive數(shù)據(jù)。

  • Mysql catalog:用于連接在Trino中,catalog是一種用于管理數(shù)據(jù)連接和數(shù)據(jù)源的概念。一個catalog可以代表一個數(shù)據(jù)庫、一個hive實(shí)例、或者其他支持的數(shù)據(jù)源。Trino可以通過啟用不同的catalog來連接和查詢不同的數(shù)據(jù)源,這樣你就可以使用一個Trino集群查詢多個數(shù)據(jù)源中的數(shù)據(jù),而不需要使用不同的工具和語言進(jìn)行查詢。

Trino中支持的catalog包括:

  • 系統(tǒng)catalog:包括systemmemory、information_schemametadata,用于管理和查詢Trino系統(tǒng)和運(yùn)行時信息。

  • Mysql catalog:用于連接Mysql數(shù)據(jù)源。

  • Hive catalog:用于連接處理Hive數(shù)據(jù)。

  • Kafka catalog:用于連接處理Kafka消息數(shù)據(jù)。

  • Elasticsearch catalog:用于連接處理Elasticsearch數(shù)據(jù)。

  • Jdbc catalog:用于連接處理關(guān)系型數(shù)據(jù)庫。

  • Cassandra catalog:用于連接處理Cassandra NoSQL數(shù)據(jù)庫。

除了以上常用的catalog,Trino還支持許多其他的catalog。你可以通過配置文件或者命令行參數(shù)來啟用或禁用不同的catalog,以便連接和查詢不同的數(shù)據(jù)源。當(dāng)啟用一個catalog時,需要為它配置連接參數(shù)和身份憑證等信息。Trino中的catalog提供了一種簡便而靈活的方式來管理連接和查詢多種數(shù)據(jù)源,使得數(shù)據(jù)查詢和集成變得更加高效和便利。

官方文檔:https://trino.io/docs/current/connector.html

六、Trino 數(shù)據(jù)類型

官方文檔:https://trino.io/docs/current/language/types.html

1)基礎(chǔ)數(shù)據(jù)類型

類型 描述 示例
boolean true或false true
tinyint 8位有符號整數(shù),最小值? 2^7 ,最大值 2^7-1 42
smallint 16位有符號整數(shù),最小值? 2^15 ,最大值 2^15-1 42
integer、int 32位有符號整數(shù),最小值? 2^31 ,最大值 2^31-1
bigint 64位有符號整數(shù),最小值? 2^63 ,最大值 2^63-1
real 32位浮點(diǎn)數(shù),遵循IEEE 754二進(jìn)制浮點(diǎn)數(shù)運(yùn)算標(biāo)準(zhǔn) 2.71828
double 64位浮點(diǎn)數(shù),遵循IEEE 754二進(jìn)制浮點(diǎn)數(shù)運(yùn)算標(biāo)準(zhǔn) 2.71828
decimal 固定精度小數(shù) 123456.7890
varchar、varchar(n) 可變長度字符串。字符長度為m(m < n),則分配m個字符 “hello world”
char、char(n) 固定長度字符串??偸欠峙鋘個字符,不管字符長度是多少。char表示char(1) “hello world”
  • 當(dāng)字符串cast為char(n),不足的字符用空格填充,多的字符被截?cái)?/li>
  • 當(dāng)插入字符串到類型為char(n)的列,不足的字符用空格填充,多了就報(bào)錯
  • 當(dāng)插入字符串到類型為varchar(n)的列,多了就報(bào)錯

2)集合數(shù)據(jù)類型

類型 示例
array array[‘a(chǎn)pples’, ‘oranges’, ‘pears’]
map map(array[‘a(chǎn)’, ‘b’, ‘c’], array[1, 2, 3])
json {‘a(chǎn)’:1, ‘b’:2, ‘c’:3}
row row(1, 2, 3)

3)日期時間數(shù)據(jù)類型

官方文檔:https://trino.io/docs/current/functions.html

類型 描述 示例
date 包含年、月、日的日期 2023-05-14
time 包含時、分、秒、毫秒的時間, 時區(qū)可選 16:26:08.123 +08:00
timestamp 包含日期和時間, 時區(qū)可選 2023-05-14 16:26:08.123 Asia/Shanghai
interval year to month 間隔時間跨度為年、月 interval ‘1-2’ year to month
interval day to second 間隔時間跨度為天、時、分、秒、毫秒 interval ‘5’ day to second

七、Trino 內(nèi)置函數(shù)

Trino(之前叫Presto)提供了豐富的內(nèi)置函數(shù),可以滿足各種SQL查詢的需求。下面對Trino內(nèi)置函數(shù)進(jìn)行詳細(xì)說明。

1)數(shù)學(xué)函數(shù)

  • abs(numeric):返回?cái)?shù)值參數(shù)的絕對值。
  • ceil(numeric):返回不小于參數(shù)的最小整數(shù)。
  • floor(numeric):返回不大于參數(shù)的最大整數(shù)。
  • exp(numeric):返回e的冪次方。
  • log(numeric):返回參數(shù)的自然對數(shù)。
  • log10(numeric):返回參數(shù)的以10為底的對數(shù)。
  • sqrt(numeric):返回參數(shù)的平方根。
  • power(numeric, numeric):返回第一個參數(shù)乘以第二個參數(shù)的冪次方。

2)字符串函數(shù)

  • concat(string1, string2, ...): 連接兩個或多個字符串。
  • length(str):返回字符串的長度。
  • substring(str, from [, length ]):返回字符串的子串,從指定位置開始(從1開始計(jì)算),如果提供長度參數(shù),則截取固定長度。
  • replace(str, pattern, replacement):將字符串中的符合模式的字符串替換成替換字符串。
  • lower(str) / upper(str):將字符串轉(zhuǎn)化成小寫/大寫。
  • trim([characters from] string):去掉字符串頭尾指定的空格或字符。
  • regexp_extract(string, pattern, index):指定模式,并返回特定位置(從1開始計(jì)算)的匹配結(jié)果。
  • regexp_replace(string, pattern, replacement):將字符串中的符合模式的字符串替換成替換字符串。

3)日期時間函數(shù)

  • date(date_string):將日期字符串轉(zhuǎn)化成日期格式。
  • current_date:返回當(dāng)前日期。
  • current_time:返回當(dāng)前時間。
  • current_timestamp:返回當(dāng)前時間戳。
  • year(date):返回日期的年份。
  • month(date):返回日期的月份。
  • day(date):返回日期的日份。
  • hour(timestamp):返回時間戳的小時部分。
  • minute(timestamp):返回時間戳的分鐘部分。
  • second(timestamp):返回時間戳的秒部分。

4)聚合函數(shù)

  • count(*) / count(expression):返回記錄數(shù)。count(*)表示所有行的行數(shù),一般用于計(jì)算表的行數(shù)。count(expression)返回expression的不同值的數(shù)量。
  • sum(number):返回列數(shù)值的總和。
  • avg(numeric):返回?cái)?shù)值列的平均值。
  • max(value) / min(value):返回列的最大值/最小值。
  • array_agg(expression):將指定表達(dá)式的結(jié)果合并為一個數(shù)組。

5)邏輯函數(shù)

  • if(condition, true_value, false_value):如果條件為真,返回true_value,否則返回false_value。
  • nullif(expression1, expression2):如果expression1等于expression2,則返回null。
  • coalesce(expression1, expression2, ...):返回參數(shù)列表中第一個非空的值。
  • and(x1, x2, ...) / or(x1, x2, ...) / not(x):邏輯運(yùn)算符,返回相應(yīng)的邏輯值。

6)類型轉(zhuǎn)換函數(shù)

  • cast(expression AS type):將表達(dá)式轉(zhuǎn)化為指定類型。
  • try_cast(expression AS type):嘗試將表達(dá)式轉(zhuǎn)化為指定類型,如果無法轉(zhuǎn)化,則返回null。
  • to_json(expression):將指定的值序列化為JSON字符串。
  • from_json(jsonString, type):將一個JSON字符串反序列化為指定類型。
  • to_array(map) / to_map(array):將一個map(array)轉(zhuǎn)化為一個數(shù)組(map)。

這些內(nèi)置函數(shù)只是Trino中的部分函數(shù),Trino還支持大量其他內(nèi)置函數(shù),可以參閱Trino的官方文檔獲得更詳細(xì)、更全面的信息。

八、Trino 中的 SQL 語法

連接:

# 如不是通過容器部署,自己有環(huán)境,可以忽略下來容器登錄的步驟
docker exec -it trino-coordinator bash

# --catalog:數(shù)據(jù)源 --schema:數(shù)據(jù)庫
${TRINO_HOME}/bin/trino-cli --server http://trino-coordinator:8080 --user=hadoop

官方文檔:https://trino.io/docs/current/sql.html

1)數(shù)據(jù)源語法

一般數(shù)據(jù)源配置在${TRINO_HOME}/etc/catalog目錄下

# 查看數(shù)據(jù)源
show catalogs;

當(dāng)然也可以通過sql創(chuàng)建,示例如下:

1、配置hive數(shù)據(jù)源${TRINO_HOME}/etc/catalog/hive.conf

connector.name=hive
hive.metastore.uri=thrift://hive-metastore:9083
hive.config.resources='/opt/apache/trino/etc/catalog/core-site.xml,/opt/apache/trino/etc/catalog/hdfs-site.xml'

2、查看catalog

${TRINO_HOME}/bin/trino-cli --server http://trino-coordinator:8080 --user=hadoop

SHOW CATALOGS;

# 查看當(dāng)前 catalog
SELECT current_catalog;

2)數(shù)據(jù)庫語法(schemas)

在Trino中,catalog用于訪問數(shù)據(jù)源和外部系統(tǒng)。每個catalog都可以包含一個或多個schema,每個schema包含一組相關(guān)的表。你可以在Trino中使用CREATE SCHEMA、DROP SCHEMA、RENAME SCHEMASHOW SCHEMAS等語句來管理schema。

語法:

CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ AUTHORIZATION ( user | USER user | ROLE role ) ]
[ WITH ( property_name = expression [, ...] ) ]

以下是一些用于操作catalog schema的示例:

    1. 創(chuàng)建一個名為schema_test的新schema
#USE 語法,USE catalog.schema 
# USE schema

USE hive.default;
CREATE SCHEMA IF NOT EXISTS schema_test;
# 查看
show schemas;

【注意】如果登錄時,沒有帶–scheme,就必須USE切換scheme,才能使用創(chuàng)建schema。

  1. 查看scheme
show schemas from hive;
show schemas;
  1. 刪除一個名為my_schema的schema
DROP SCHEMA hive.schema_test;
  1. 查看當(dāng)前scheme
# 查看當(dāng)前catalog
SELECT current_catalog;
# 查看scheme
SELECT current_schema;

3)表 DDL 語法

在Trino中,你可以使用CREATE TABLE語句來創(chuàng)建表,使用ALTER TABLE來修改表的結(jié)構(gòu)和元數(shù)據(jù),并使用DROP TABLE來刪除表。

下面分別介紹一下這幾個操作的語法和參數(shù):

1、創(chuàng)建表 - CREATE TABLE

語法:

CREATE TABLE [ IF NOT EXISTS ]
table_name (
  { column_name data_type [ NOT NULL ]
      [ COMMENT comment ]
      [ WITH ( property_name = expression [, ...] ) ]
  | LIKE existing_table_name
      [ { INCLUDING | EXCLUDING } PROPERTIES ]
  }
  [, ...]
)
[ COMMENT table_comment ]
[ WITH ( property_name = expression [, ...] ) ]

使用CREATE TABLE創(chuàng)建一個新的表。下面是一個示例:

CREATE TABLE orders (
  orderkey bigint,
  orderstatus varchar,
  totalprice double,
  orderdate date
)
WITH (format = 'ORC')

# 在Trino中,你可以使用 FORMAT 子句指定查詢結(jié)果輸出的格式。Trino支持多種常見格式,包括文本(text)、CSV、JSON、javax.json、Avro、Parquet、ORC、RCFile等。

其中,my_table是你想要創(chuàng)建的表名,后面的括號中列出了表的列和對應(yīng)的數(shù)據(jù)類型。在Trino中可以定義多種數(shù)據(jù)類型,如integervarchar、boolean等等。更多數(shù)據(jù)類型可以查看Trino官方文檔。

你可以使用CREATE TABLE的參數(shù)進(jìn)行更高級的操作,例如指定分桶(bucket)、分區(qū)(partition)和格式(format),以下是一些常用參數(shù)的示例:

CREATE TABLE my_table3 (
  column1 int,
  column2 varchar(64),
  column3 varchar(64),
  column4 varchar(64)
)
WITH (
  format = 'ORC',
  partitioned_by = ARRAY['column3','column4'],
  bucketed_by = ARRAY['column2'],
  bucket_count = 10
);
# 注意:partitioned字段必須是表的最后的字段

這個示例中,表使用ORC格式存儲,按照column3和column4列進(jìn)行了分區(qū),使用column2列進(jìn)行了分桶,并設(shè)置了10個桶。

2、修改表 - ALTER TABLE

使用ALTER TABLE命令修改現(xiàn)有表。下面是一些常見的用法:

  • 添加列
ALTER TABLE my_table ADD COLUMN new_column datatype;
  • 修改列
ALTER TABLE my_table ALTER COLUMN column1 TYPE new_datatype;
  • 刪除列
ALTER TABLE my_table DROP COLUMN column1;
  • 添加分區(qū)
ALTER TABLE my_table ADD PARTITION (column1 = 'value1', column2 = 'value2');
  • 刪除分區(qū)
ALTER TABLE my_table DROP PARTITION (column1 = 'value1', column2 = 'value2', ...);
3、刪除表 - DROP TABLE

使用DROP TABLE語句刪除現(xiàn)有表。下面是一個示例:

DROP TABLE my_table;

-- 如報(bào)錯:io.prestosql.spi.security.AccessDeniedException: Access Denied: Cannot drop table
-- 在catalog hive中添加以下兩行
-- hive.allow-drop-table=true
-- hive.allow-rename-table=true

注意:刪除一個表將會永久刪除該表的全部數(shù)據(jù),慎重操作!

4、trino 中的分區(qū)分桶

在Trino中,你可以使用分區(qū)(partition)和分桶(bucket)來優(yōu)化查詢性能,提高查詢速度和效率。

1、分區(qū)(partition)
  • 分區(qū)是指把數(shù)據(jù)按照一定規(guī)則劃分成若干部分(比如按照日期、地區(qū)、類別等),每個部分就是一個分區(qū)。在Trino中,你可以使用 CREATE TABLE 語句的 partitioned_by 子句來創(chuàng)建一個分區(qū)表,你可以寫入數(shù)據(jù)到這個表的每個分區(qū)。

  • 使用分區(qū)對于查詢過濾條件的列進(jìn)行過濾非常高效。Trino實(shí)際上將所有數(shù)據(jù)按照分區(qū)規(guī)則分布到磁盤的不同目錄下,當(dāng)你執(zhí)行包含了分區(qū)過濾的查詢時,Trino會自動發(fā)現(xiàn)這個過濾條件,并且只讀取符合條件的分區(qū)數(shù)據(jù),這樣就可以大大提高查詢效率。

以下是一個創(chuàng)建一個按照日期分區(qū)的示例:

CREATE TABLE my_part_table (
  id bigint,
  name varchar(64),
  event_date date
)
WITH (
partitioned_by = ARRAY['event_date']
);
2、分桶(bucket)
  • 分桶是將表中的數(shù)據(jù)劃分成若干個桶(bucket)存儲的方式。在Trino中,你可以使用 CREATE TABLE 語句的 bucketed_bybucket_count 子句來創(chuàng)建一個分桶表。在建表時,你需要定義一個或多個bucket列并設(shè)置桶的數(shù)量,Trino會根據(jù)這些設(shè)置把表中的數(shù)據(jù)分配到不同的桶中。

使用分桶后,Trino優(yōu)化器可以將查詢操作分配到不同的節(jié)點(diǎn)上并行執(zhí)行,以實(shí)現(xiàn)更快的查詢速度。比如,如果你的分桶表中有100個桶,Trino可以把這100個桶分配到100個不同的節(jié)點(diǎn)上并行執(zhí)行查詢操作,從而大大提高查詢效率。

以下是一個創(chuàng)建分桶的示例:

CREATE TABLE my_bucket_table (
  id INT,
  name VARCHAR,
  age INT
)
WITH (
  bucket_count = 10,
  bucketed_by = ARRAY['id']
);

CREATE TABLE my_bucket_table_new (
  id INT,
  name VARCHAR,
  age INT
)
WITH (
  bucket_count = 10,
  bucketed_by = ARRAY['id']
);

4)添加數(shù)據(jù)

INSERT INTO my_bucket_table (id, name, age) VALUES (1, 'Tom', 20), (2, 'Jerry', 23);
INSERT INTO my_bucket_table_new SELECT * FROM my_bucket_table;

Presto(Trino)配置參數(shù)以及 SQL語法講解就先到這里了,有任何疑問歡迎給我留言,也可關(guān)注我的公眾號【大數(shù)據(jù)與云原生技術(shù)分享】加群交流或私信咨詢問題~文章來源地址http://www.zghlxwxcb.cn/news/detail-492565.html

到了這里,關(guān)于【大數(shù)據(jù)】Presto(Trino)配置參數(shù)以及 SQL語法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)庫概述SQL基本語法

    database簡稱DB: 存儲數(shù)據(jù)的倉庫,是以某種結(jié)構(gòu)存儲數(shù)據(jù)的文件。指長期保存在計(jì)算機(jī)的存儲設(shè)備上,按照一定規(guī)則組織起來,可以被用戶或應(yīng)用共享的數(shù)據(jù)集合。 用于創(chuàng)建,維護(hù),使用數(shù)據(jù)庫的一種大型軟件系統(tǒng)。比如MySQL, Oracle, SQL server等等。 方式1:右鍵任務(wù)欄-任務(wù)管理

    2024年02月12日
    瀏覽(22)
  • Hive SQL 優(yōu)化大全(參數(shù)配置、語法優(yōu)化)

    Hive SQL 優(yōu)化大全(參數(shù)配置、語法優(yōu)化)

    服務(wù)器環(huán)境說明 機(jī)器名稱 內(nèi)網(wǎng)IP 內(nèi)存 CPU 承載服務(wù) master 192.168.10.10 8 4 NodeManager、DataNode、NameNode、JobHistoryServer、Hive、HiveServer2、MySQL slave1 192.168.10.11 8 4 NodeManager、DataNode、ResourceManager slave2 192.168.10.12 8 4 NodeManager、DataNode、SecondaryNameNode 操作系統(tǒng)均為: CentOS 7.5 組件版本 jdk 1

    2024年02月10日
    瀏覽(21)
  • Vue 3 的概述以及 ES 6 基本語法的介紹

    本章首先介紹前端架構(gòu)模式,然后在此基礎(chǔ)上介紹 Vue 及其安裝方式,接著介紹 Vue 3的新特性,最后介紹 ECMAScript6 (簡稱ES 6)的語法。 在學(xué)習(xí) Vue.js之前,我們先來了解一下 MVVM (Model-View-ViewModel, 模型-視圖-視圖模型)模式,它是一種基于前端開發(fā)的架構(gòu)模式。MVVM 最早出現(xiàn)于

    2024年03月22日
    瀏覽(30)
  • MySQL進(jìn)階篇:索引(概述,結(jié)構(gòu),分類,語法,SQL性能分析,索引使用,設(shè)計(jì)原則)

    MySQL進(jìn)階篇:索引(概述,結(jié)構(gòu),分類,語法,SQL性能分析,索引使用,設(shè)計(jì)原則)

    索引(index)是幫助MysQL 高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) ( 有序 )。 在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護(hù)著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù),這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)高級查找算法,這種數(shù)據(jù)結(jié)構(gòu)就是索引。 優(yōu)缺點(diǎn): MySQL的索引是在存儲

    2024年01月20日
    瀏覽(110)
  • 【C#】Sql Server 設(shè)置IN查詢方法內(nèi)的參數(shù),固定參數(shù)、動態(tài)參數(shù)以及通過分隔含有逗號隔開的字符串轉(zhuǎn)數(shù)據(jù)集

    在平時使用sql語句查詢時,in查詢肯定少不了,多數(shù)用于一些數(shù)據(jù)統(tǒng)計(jì)或者測試類。in查詢并不建議放到實(shí)際常用的查詢列表里。 此篇文章主要簡單聊聊,in查詢方法內(nèi)的參數(shù)設(shè)置方式,以及通過分隔函數(shù)將含有逗號隔開的字符串轉(zhuǎn)為數(shù)據(jù)集進(jìn)行查詢 在 SQL Server 中,你可以使

    2024年02月15日
    瀏覽(57)
  • 【trino權(quán)威指南】使用trino詳解:trino client安裝、查詢sql、DBeaver連接trino、java通過JDBC連接trino

    【trino權(quán)威指南】使用trino詳解:trino client安裝、查詢sql、DBeaver連接trino、java通過JDBC連接trino

    Trino CLI提供了一個基于終端的交互式shell。你可以通過它運(yùn)行查詢并與Trino服務(wù)端交互來 檢查其元數(shù)據(jù) 。 下載地址:trino-cli-434-executable.jar ? ? 運(yùn)行sql ? 連接trino時可以設(shè)置默認(rèn)的catalog(某個連接實(shí)例)和schema(數(shù)據(jù)庫),這樣可以直接查詢表。 ? USE默認(rèn)的catalog和schema,直

    2024年02月04日
    瀏覽(17)
  • java:Kafka生產(chǎn)者推送數(shù)據(jù)與消費(fèi)者接收數(shù)據(jù)(參數(shù)配置以及案例)

    bootstrap.servers :Kafka集群中的Broker列表,格式為host1:port1,host2:port2,…。生產(chǎn)者會從這些Broker中選擇一個可用的Broker作為消息發(fā)送的目標(biāo)Broker。 acks :Broker對消息的確認(rèn)模式??蛇x值為0、1、all。0表示生產(chǎn)者不會等待Broker的任何確認(rèn)消息;1表示生產(chǎn)者會等待Broker的Leader副本確認(rèn)

    2024年02月16日
    瀏覽(36)
  • orcale 存儲過程詳細(xì)教程以及pl/sql的語法

    1.1 創(chuàng)建存儲過程語法 1.2 輸出案例 1.3 帶參數(shù)的存儲過程

    2024年02月12日
    瀏覽(53)
  • SQL Server Management Studio (SSMS)下載,安裝以及連接數(shù)據(jù)庫配置

    SQL Server Management Studio (SSMS)下載,安裝以及連接數(shù)據(jù)庫配置

    目錄 (一)前言 (二)下載與安裝 1. 下載 (1)下載地址 (2)SSMS對操作系統(tǒng)的要求 2. 安裝 (1)存放下載好的安裝包 (2) 雙擊進(jìn)入安裝 3. SSMS的簡單使用 (1)打開SSMS (2)SSMS登錄配置框填寫 (3)刪除登錄界面上的記錄 (三)卸載SSMS 1. 進(jìn)入控制面板 2.? 找到卸載軟件

    2024年02月03日
    瀏覽(31)
  • 三種SQL實(shí)現(xiàn)聚合字段合并(presto、hive、mysql)

    三種SQL實(shí)現(xiàn)聚合字段合并(presto、hive、mysql)

    需求:按照項(xiàng)目名,以逗號合并參與人

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包