本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 SQL 程式碼編輯器查詢設定的資料表
身為可以查詢的成員,您可以在 SQL 程式碼編輯器中撰寫 SQL 程式碼來手動建置查詢。SQL 程式碼編輯器位於 AWS Clean Rooms 主控台分析索引標籤的分析區段。
預設會顯示 SQL 程式碼編輯器。如果您想要使用分析建置器來建置查詢,請參閱 使用分析建置器查詢。
重要
如果您開始在程式碼編輯器中寫入 SQL 查詢,然後開啟分析建置器 UI,則不會儲存您的查詢。
AWS Clean Rooms 支援許多 SQL 命令、函數和條件。如需詳細資訊,請參閱 AWS Clean Rooms SQL 參考。
提示
如果在查詢執行時發生排程維護,查詢會終止並復原。您必須重新啟動查詢。
使用 SQL 程式碼編輯器查詢設定的資料表
-
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cleanrooms
開啟 AWS Clean Rooms 主控台。 -
在左側導覽窗格中,選擇協同合作。
-
選擇具有執行查詢成員能力狀態的協同合作。
-
在分析索引標籤的資料表下,檢視資料表清單及其相關聯的分析規則類型 (彙總分析規則、清單分析規則或自訂分析規則)。
-
(選用) 若要檢視資料表的結構描述和分析規則控制項,請選取加號圖示 (+) 展開資料表。
-
在分析區段下,針對分析模式,選取寫入 SQL 程式碼。
注意
分析區段只會在可接收結果的成員和負責支付查詢運算成本的成員以作用中成員的身分加入協同合作時顯示。
-
透過在 SQL 程式碼編輯器中輸入查詢來建置查詢。
如需支援的 SQL 命令和函數的詳細資訊,請參閱 AWS Clean Rooms SQL 參考。
您也可以使用下列選項來建置查詢。
-
(僅限 Spark 分析引擎) 指定支援的工作者類型和工作者數量。
您可以選擇執行個體類型和執行個體數量 (工作者) 來執行 SQL 查詢。
對於 CR.1X,您最多可以選取 128 個工作者或至少 4 個工作者。
對於 CR.4X,您最多可以選取 32 個工作者或至少 4 個工作者。
使用下表來判斷使用案例所需的類型和數量或工作者。
工作者類型 vCPU 記憶體 (GB) 儲存體 (GB) 工作者數目 無塵室處理單元總數 (CRPU) CR.1X (預設) 4 30 100 4 8 128 256 CR.4X 16 120 400 4 32 32 256 注意
不同的工作者類型和工作者數量都有相關聯的成本。若要進一步了解 定價,請參閱 AWS Clean Rooms 定價
。 -
針對傳送結果至 ,指定誰可以接收結果。
注意
若要接收結果,協同合作成員必須設定為結果接收者,且必須是協同合作中的作用中參與者 (狀態:作用中)
-
(只能查詢的成員) 預設會選取使用您的預設結果設定核取方塊。如果您想要保留預設結果設定,請保持選取此選項。
如果您想要為此查詢指定不同的結果設定,請清除使用您的預設結果設定核取方塊,然後選擇下列選項。
-
結果格式 (CSV 或 PARQUET)
-
結果檔案 (單一或多個)
-
Amazon S3 中的結果目的地
每個可以接收結果的成員可以在 Amazon S3 中指定不同的結果格式、結果檔案和結果目的地。 Amazon S3
-
-
(僅限 Spark 分析引擎) 若要指定 Spark 屬性:
-
展開 Spark 屬性。
-
選擇新增 Spark 屬性。
-
在 Spark 屬性對話方塊中,從下拉式清單中選擇屬性名稱,然後輸入值。
下表提供每個屬性的定義。
如需 Spark 屬性的詳細資訊,請參閱 Apache Spark 文件中的 Spark 屬性
。 屬性名稱 說明 預設值 spark.task.maxFailures
控制任務在任務失敗之前可以失敗的連續次數。需要大於或等於 1 的值。允許重試次數等於此值減去 1。如果任何嘗試成功,失敗計數會重設。不同任務的故障不會累積到此限制。
4
spark.sql.files.maxPartitionBytes
設定從 Parquet、JSON 和 ORC 等檔案型來源讀取時,要封裝至單一分割區的最大位元組數。
128MB
spark.hadoop.fs.s3.maxRetries
設定 Amazon S3 檔案操作的重試嘗試次數上限。
spark.network.timeout
設定所有網路互動的預設逾時。若未設定,則覆寫下列逾時設定:
-
spark.storage.blockManagerHeartbeatTimeoutMs
-
spark.shuffle.io.connectionTimeout
-
spark.rpc.askTimeout
-
spark.rpc.lookupTimeout
待定
spark.rdd.compress
指定是否使用 spark.io.compression.codec 壓縮序列化 RDD 分割區。適用於 Java 和 Scala 中的 StorageLevel.MEMORY_ONLY_SER,或 Python 中的 StorageLevel.MEMORY_ONLY。減少儲存空間,但需要額外的 CPU 處理時間。
FALSE
spark.shuffle.spill.compress
指定是否使用 spark.io.compression.codec 壓縮隨機溢出資料。
TRUE
spark.sql.adaptive.advisoryPartitionSizeInBytes
在 spark.sql.adaptive.enabled 為 true 的適應性最佳化期間,設定隨機播放分割區的目標大小,以位元組為單位。在合併小型分割區或分割偏斜分割區時控制分割區大小。
( spark.sql.adaptive.shuffle.targetPostShuffleInputSize 的值)
spark.sql.adaptive.autoBroadcastJoinThreshold
設定在聯結期間廣播至工作者節點的資料表大小上限,以位元組為單位。僅適用於自適應架構。使用與 spark.sql.autoBroadcastJoinThreshold 相同的預設值。設定為 -1 以停用廣播。
(無)
spark.sql.adaptive.coalescePartitions.enabled
指定是否要根據 spark.sql.adaptive.advisoryPartitionSizeInBytes 來合併連續隨機播放分割區,以最佳化任務大小。需要 spark.sql.adaptive.enabled 才能成立。
TRUE
spark.sql.adaptive.coalescePartitions.initialPartitionNum
在合併之前定義隨機播放分割區的初始數量。同時需要 spark.sql.adaptive.enabled 和 spark.sql.adaptive.coalescePartitions.enabled 為 true。預設為 spark.sql.shuffle.partitions 的值。
(無)
spark.sql.adaptive.coalescePartitions.minPartitionSize
設定合併隨機播放分割區的大小下限,以防止分割區在適應性最佳化期間變得太小。
1 MB
spark.sql.adaptive.coalescePartitions.parallelismFirst
指定是否要在分割區合併期間根據叢集平行處理而非 spark.sql.adaptive.advisoryPartitionSizeInBytes 計算分割區大小。產生的分割區大小小於設定的目標大小,以最大化平行處理。我們建議在忙碌叢集上將此設定為 false,以透過防止過多的小型任務來改善資源使用率。
TRUE
spark.sql.adaptive.enabled
指定是否啟用自適應查詢執行,以在查詢執行期間根據準確的執行時間統計資料重新最佳化查詢計劃。
TRUE
spark.sql.adaptive.forceOptimizeSkewedJoin
指定是否強制啟用 OptimizeSkewedJoin,即使它引入額外的隨機播放。
FALSE
spark.sql.adaptive.localShuffleReader.enabled
指定是否在不需要隨機分割時使用本機隨機讀取器,例如從排序合併聯結轉換為廣播雜湊聯結之後。需要 spark.sql.adaptive.enabled 才能成立。
TRUE
spark.sql.adaptive.maxShuffledHashJoinLocalMapThreshold
設定建置本機雜湊映射的分割區大小上限,以位元組為單位。在下列情況下,將隨機雜湊聯結優先於排序合併聯結:
-
此值等於或超過 spark.sql.adaptive.advisoryPartitionSizeInBytes
-
所有分割區大小都在此限制內
覆寫 spark.sql.join.preferSortMergeJoin 設定。
0 個位元組
spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled
指定是否根據 spark.sql.adaptive.advisoryPartitionSizeInBytes 將扭曲隨機播放分割區分割為較小的分割區,以最佳化扭曲隨機播放分割區。需要 spark.sql.adaptive.enabled 才能成立。
TRUE
spark.sql.adaptive.rebalancePartitionsSmallPartitionFactor
定義分割期間合併分割區的大小閾值因素。小於此因素的分割區乘以 spark.sql.adaptive.advisoryPartitionSizeInBytes 會合併。
0.2
spark.sql.adaptive.skewJoin.enabled
指定是否透過分割和選擇性複寫扭曲的分割區來處理隨機聯結中的資料扭曲。適用於排序合併和隨機雜湊聯結。需要 spark.sql.adaptive.enabled 才能成立。
TRUE
spark.sql.adaptive.skewJoin.skewedPartitionFactor
決定決定分割區扭曲的大小因素。當分割區的大小超過以下兩者時,就會扭曲:
-
此係數乘以中位數分割區大小
-
spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes 的值
5
spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes
設定識別扭曲分割區的大小閾值,以位元組為單位。當分割區的大小超過以下兩者時,就會扭曲:
-
此閾值
-
中位數分割區大小乘以 spark.sql.adaptive.skewJoin.skewedPartitionFactor
我們建議您設定大於 spark.sql.adaptive.advisoryPartitionSizeInBytes 的值。
256MB
spark.sql.autoBroadcastJoinThreshold
設定在聯結期間廣播至工作者節點的資料表大小上限,以位元組為單位。設定為 -1 以停用廣播。
10MB
spark.sql.broadcastTimeout
控制廣播聯結期間廣播操作的逾時期間,以秒為單位。
300 秒
spark.sql.cbo.enabled
指定是否要為計劃統計資料估算啟用成本型最佳化 (CBO)。
FALSE
spark.sql.cbo.joinReorder.dp.star.filter
指定是否要在成本型聯結列舉期間套用星狀聯結篩選條件啟發式。
FALSE
spark.sql.cbo.joinReorder.dp.threshold
設定動態程式設計演算法中允許的聯結節點數目上限。
12
spark.sql.cbo.joinReorder.enabled
指定是否要在成本型最佳化 (CBO) 中啟用聯結重新排序。
FALSE
spark.sql.cbo.planStats.enabled
指定是否要在邏輯計畫產生期間從目錄擷取資料列計數和資料欄統計資料。
FALSE
spark.sql.cbo.starSchemaDetection
指定是否根據星狀結構描述偵測啟用聯結重新排序。
FALSE
spark.sql.crossJoin.enabled
spark.sql.files.maxPartitionNum
設定檔案型來源 (Parquet、JSON 和 ORC) 的目標分割檔案分割區數量上限。當初始計數超過此值時,重新擴展分割區。這是建議的目標,而不是保證的限制。
(無)
spark.sql.files.maxRecordsPerFile
設定寫入單一檔案的記錄數目上限。設定為零或負值時不會套用任何限制。
0
spark.sql.files.minPartitionNum
設定檔案型來源 (Parquet、JSON 和 ORC) 的目標分割檔案分割區數量下限。預設為 spark.sql.leafNodeDefaultParallelism。這是建議的目標,而不是保證的限制。
(無)
spark.sql.inMemoryColumnarStorage.batchSize
控制單欄式快取的批次大小。增加大小可改善記憶體使用率和壓縮,但會增加out-of-memory錯誤的風險。
10000
spark.sql.inMemoryColumnarStorage.compressed
指定是否根據資料統計資料自動選取資料欄的壓縮轉碼器。
TRUE
spark.sql.inMemoryColumnarStorage.enableVectorizedReader
指定是否要為單欄式快取啟用向量化讀取。
TRUE
spark.sql.legacy.allowHashOnMapType
指定是否允許對映射類型資料結構執行雜湊操作。此舊版設定可維持與舊版 Spark 版本的映射類型處理的相容性。
spark.sql.legacy.allowNegativeScaleOfDecimal
指定是否在十進位類型定義中允許負縮放值。此舊版設定可維持與支援負小數位數擴展之較舊 Spark 版本的相容性。
spark.sql.legacy.castComplexTypesToString.enabled
指定是否啟用將複雜類型轉換為字串的舊版行為。維持與舊版 Spark 版本類型轉換規則的相容性。
spark.sql.legacy.charVarcharAsString
指定是否將 CHAR 和 VARCHAR 類型視為 STRING 類型。此舊版設定提供與較舊 Spark 版本的字串類型處理相容性。
spark.sql.legacy.createEmptyCollectionUsingStringType
指定是否使用字串類型元素建立空集合。此舊版設定可維持與較舊 Spark 版本的集合初始化行為的相容性。
spark.sql.legacy.exponentLiteralAsDecimal.enabled
指定是否要將指數常值解譯為十進位類型。此舊版設定可維持與舊版 Spark 版本數值常值處理的相容性。
spark.sql.legacy.json.allowEmptyString.enabled
指定是否要在 JSON 處理中允許空字串。此舊版設定可維持與較舊 Spark 版本的 JSON 剖析行為的相容性。
spark.sql.legacy.parquet.int96RebaseModelRead
指定是否在讀取 Parquet 檔案時使用舊版 INT96 時間戳記重新基礎模式。此舊版設定可維持與較舊 Spark 版本時間戳記處理的相容性。
spark.sql.legacy.timeParserPolicy
控制時間剖析行為以實現回溯相容性。此舊版設定會決定如何從字串剖析時間戳記和日期。
spark.sql.legacy.typeCoercion.datetimeToString.enabled
指定是否在將日期時間值轉換為字串時啟用舊版類型強制行為。維持與較舊 Spark 版本日期時間轉換規則的相容性。
spark.sql.maxSinglePartitionBytes
設定以位元組為單位的分割區大小上限。規劃器為較大的分割區引進隨機播放操作,以改善平行處理。
128 公尺
spark.sql.metadataCacheTTLSeconds
控制中繼資料快取的time-to-live (TTL)。適用於分割區檔案中繼資料和工作階段目錄快取。需要:
-
大於零的正值
-
spark.sql.catalogImplementation 設定為 hive
-
spark.sql.hive.filesourcePartitionFileCacheSize 大於零
-
spark.sql.hive.manageFilesourcePartitions 設定為 true
-1000ms
spark.sql.optimizer.collapseProjectAlwaysInline
指定是否要摺疊相鄰投影和內嵌表達式,即使會導致重複。
FALSE
spark.sql.optimizer.dynamicPartitionPruning.enabled
指定是否要為用作聯結索引鍵的分割區資料欄產生述詞。
TRUE
spark.sql.optimizer.enableCsvExpressionOptimization
指定是否要在 SQL 最佳化工具中透過從 csv 操作刪除不必要的資料欄來最佳化 CSV 表達式。
TRUE
spark.sql.optimizer.enableJsonExpressionOptimization
指定是否要透過下列方式最佳化 SQL 最佳化工具中的 JSON 表達式:
-
從_json 操作刪除不必要的資料欄
-
簡化從 json 和 到 json 的組合
-
最佳化 named_struct 操作
TRUE
spark.sql.optimizer.excludedRules
定義要停用的最佳化工具規則,以逗號分隔的規則名稱識別。某些規則無法停用,因為正確性需要它們。最佳化工具會記錄哪些規則已成功停用。
(無)
spark.sql.optimizer.runtime.bloomFilter.applicationSideScanSizeThreshold
設定在應用程式端插入 Bloom 篩選條件所需的最小彙總掃描大小,以位元組為單位。
10GB
spark.sql.optimizer.runtime.bloomFilter.creationSideThreshold
定義在建立端注入 Bloom 篩選條件的大小閾值上限。
10MB
spark.sql.optimizer.runtime.bloomFilter.enabled
指定是否要插入 Bloom 篩選條件,以便在隨機聯結的一側具有選擇性述詞時減少隨機播放資料。
TRUE
spark.sql.optimizer.runtime.bloomFilter.expectedNumItems
定義執行時間 Bloom 篩選條件中預期項目的預設數量。
1000000
spark.sql.optimizer.runtime.bloomFilter.maxNumBits
設定執行時間 Bloom 篩選條件中允許的位元數上限。
67108864
spark.sql.optimizer.runtime.bloomFilter.maxNumItems
設定執行時間 Bloom 篩選條件中允許的預期項目數量上限。
4000000
spark.sql.optimizer.runtime.bloomFilter.number.threshold
限制每個查詢允許的非 DPP 執行時間篩選條件數量上限,以防止out-of-memory錯誤。
10
spark.sql.optimizer.runtime.bloomFilter.numBits
定義執行時間 Bloom 篩選條件中使用的預設位元數。
8388608
spark.sql.optimizer.runtime.rowlevelOperationGroupFilter.enabled
指定是否啟用資料列層級操作的執行時間群組篩選。允許資料來源:
-
使用資料來源篩選條件刪除整個資料群組 (例如檔案或分割區)
-
執行執行時間查詢以識別相符的記錄
-
捨棄不必要的群組,以避免昂貴的重寫
限制:
-
並非所有表達式都可以轉換為資料來源篩選條件
-
有些表達式需要 Spark 評估 (例如子查詢)
TRUE
spark.sql.optimizer.runtimeFilter.semiJoinReduction.enabled
指定是否要插入半聯結,以便在隨機聯結的一側具有選擇性述詞時減少隨機資料。
FALSE
spark.sql.parquet.aggregatePushdown
指定是否將彙總下推至 Parquet 以進行最佳化。支援:
-
布林值、整數、浮點數和日期類型的 MIN 和 MAX
-
所有資料類型的 COUNT
如果任何 Parquet 檔案頁尾缺少統計資料,則擲回例外狀況。
FALSE
spark.sql.parquet.columnarReaderBatchSize
控制每個 Parquet 向量化讀取器批次中的資料列數。選擇平衡效能額外負荷和記憶體用量的值,以防止out-of-memory錯誤。
4096
spark.sql.session.timeZone
定義工作階段時區,以處理字串常值和 Java 物件轉換中的時間戳記。接受:
-
區域/城市格式的區域型 IDs(例如 America/Los_Angeles)
-
區域位移,以 (+/-)HH、(+/-)HH:mm 或 (+/-)HH:mm:ss 格式顯示 (例如 -08 或 +01:00)
-
+00:00 的 UTC 或 Z 別名
(本機時區的值)
spark.sql.shuffle.partitions
設定聯結或彙總期間資料隨機播放的預設分割區數量。結構式串流查詢從相同檢查點位置重新啟動之間無法修改。
200
spark.sql.shuffledHashJoinFactor
定義用於判斷隨機雜湊聯結資格的乘數係數。當小邊資料大小乘以此因素時,會選取隨機雜湊聯結,小於大型邊資料大小。
3
spark.sql.sources.parallelPartitionDiscovery.threshold
使用檔案型來源 (Parquet、JSON 和 ORC) 設定驅動程式端檔案清單的路徑數目上限。在分割區探索期間超過 時,會使用個別的 Spark 分散式任務列出檔案。
32
spark.sql.statistics.histogram.enabled
指定是否要在資料欄統計資料運算期間產生等高長長條圖,以改善估算準確度。需要額外的資料表掃描,超過基本資料欄統計資料所需的資料表掃描。
FALSE
來源
https://spark.apache.org/docs/latest/configuration.html#spark-properties
-
-
選擇執行。
注意
如果可以接收結果的成員尚未設定查詢結果設定,則無法執行查詢。
-
檢視結果。
如需詳細資訊,請參閱接收和使用分析結果。
-
繼續調整參數並再次執行查詢,或選擇 + 按鈕在新索引標籤中啟動新查詢。
注意
AWS Clean Rooms 旨在提供明確的錯誤訊息。如果錯誤訊息沒有足夠的詳細資訊來協助您進行疑難排解,請聯絡客戶團隊。向他們提供錯誤如何發生的描述和錯誤訊息 (包括任何識別符)。如需詳細資訊,請參閱故障診斷 AWS Clean Rooms。