日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

分析外部OSS上的數(shù)據(jù)

本文介紹了使用列存索引功能查詢OSS上的外表數(shù)據(jù)的技術(shù)原理和使用方法等內(nèi)容。

背景信息

業(yè)務(wù)存續(xù)期間,隨著時間的推移,數(shù)據(jù)的規(guī)模不斷增加導(dǎo)致存儲成本上升。用戶在應(yīng)對激烈的市場競爭時,業(yè)務(wù)邏輯也在不斷地發(fā)生變化,對應(yīng)計算分析的復(fù)雜度也在提升,因此,計算性能至關(guān)重要。另外,一個完整的數(shù)據(jù)應(yīng)用,通常需要組合多個分析工具來完成不同的需求,數(shù)據(jù)需要流轉(zhuǎn)在不同的系統(tǒng)之間。

使用列存索引功能讀取OSS上的外表數(shù)據(jù)能很好的實現(xiàn)上述需求,優(yōu)勢如下:

  • OSS作為云原生的存儲方案有著非常高的性價比;

  • 列存索引功能能夠提供超高的計算速度和計算的靈活性;

  • 開放的數(shù)據(jù)存儲格式(如ORC、Parquet)有著廣泛的兼容性以及高壓縮比,便于數(shù)據(jù)在不同系統(tǒng)之間流轉(zhuǎn)。

技術(shù)原理架構(gòu)圖_ALL

列存索引(IMCI)是一個高性能的列存分析引擎,相關(guān)文檔請參見PolarDB HTAP實時數(shù)據(jù)分析技術(shù)解密,ORC和Parquet也是列存格式,OSS支持高并發(fā)讀取,在高并發(fā)時可以獲取更高的網(wǎng)絡(luò)吞吐。因此,IMCI的并行掃描功能可以充分利用OSS的高帶寬,并通過并行計算或向量計算來提升CPU的使用效率,最終獲得極高的分析速度,并支持離線和實時數(shù)據(jù)的聚合分析。

典型應(yīng)用場景

以一個典型數(shù)倉架構(gòu)為例,通過ETL將在線數(shù)據(jù)(關(guān)系數(shù)據(jù)庫或者應(yīng)用服務(wù)日志)導(dǎo)入離線分析平臺做計算分析,分析的結(jié)果(如數(shù)倉模型的數(shù)據(jù)集市層ADS)再導(dǎo)入關(guān)系數(shù)據(jù)庫中,用于對接BI報告、監(jiān)控和廣告計算等應(yīng)用。應(yīng)用場景

該架構(gòu)有幾個典型的瓶頸點:

  1. 將離線數(shù)倉分析結(jié)果導(dǎo)入關(guān)系型數(shù)據(jù)庫時,存在導(dǎo)入速度慢和存儲成本高等問題;

  2. 數(shù)據(jù)應(yīng)用層(ADS)并不只是簡單的查詢數(shù)據(jù)和分析結(jié)果,也存在大量的計算,甚至?xí)㈦x線數(shù)據(jù)和實時數(shù)據(jù)進行聚合分析,此時,行存格式的MySQL并不能很好的支撐這些操作。

使用該功能后,數(shù)據(jù)架構(gòu)如下圖所示:圖3

該架構(gòu)既解決了數(shù)據(jù)應(yīng)用層(ADS)的存儲成本,同時也實現(xiàn)了高性能的“二次”即席分析以及離線或在線數(shù)據(jù)的整合分析。

注意事項

  • CREATE語句中必須添加COMMENT='columnar=1' CONNECTION信息。

  • 當(dāng)查詢同時涉及本地表和OSS外表時,需要在本地表上創(chuàng)建列存索引。

參數(shù)說明

參數(shù)

說明

imci_ignore_schema_miss_match_oss_file

掃描OSS上的數(shù)據(jù)文件時,是否忽略與Schema不匹配的文件。取值如下:

  • ON:忽略與Schema不匹配的文件。

  • OFF(默認(rèn)):不忽略與Schema不匹配的文件。

imci_oss_table_scan_unit

IMCI并行掃描的單次掃描范圍。

取值范圍:0~1000。默認(rèn)值為2。

imci_oss_max_retries

讀取OSS上的外表數(shù)據(jù)失敗時的重試次數(shù)。

取值范圍:0~100。默認(rèn)值為0。

imci_oss_max_retriy_backoff_ms

取值范圍:10~1000。默認(rèn)值為300。

imci_oss_scan_odps_compatible

是否以O(shè)DPS兼容模式導(dǎo)出數(shù)據(jù)。取值如下:

  • ON:以O(shè)DPS兼容模式導(dǎo)出數(shù)據(jù)。

  • OFF(默認(rèn)):不以O(shè)DPS兼容模式導(dǎo)出數(shù)據(jù)。

使用方法

  1. 創(chuàng)建OSS外表。

    通過CREATE語句建表,并標(biāo)明列類型、OSS連接信息以及OSS上的數(shù)據(jù)文件路徑。您可以使用以下兩種方式來標(biāo)明列類型。

    • 第一種方式:從OSS數(shù)據(jù)文件中獲取列類型(推薦),如下所示:

      CREATE FOREIGN TABLE `test` FROM CONNECTION='OSS://${oss_key}:${oss_key_secret}@${endpoint}/${bucket}/test.orc' 
      COMMENT='columnar=1';

      您可以使用SHOW create table tabname命令來查看列類型,如下所示:showtabname

    • 第二種方式:在建表時指定列類型,如下所示:

      CREATE TABLE `test` (
        `r_regionkey` bigint(20),
        `r_name` text,
        `r_comment` text,
        PRIMARY KEY (`r_regionkey`)
      )
      COMMENT='columnar=1' 
      CONNECTION='OSS://${oss_key}:${oss_key_secret}@${endpoint}/${bucket}/test.orc' 

      其中,OSS連接信息可以寫在CONNECTION字段中。也可以先創(chuàng)建FOREIGH SERVER,然后在創(chuàng)建表時,在CONNECTION字段引用FOREIGH SERVER的OSS連接信息。示例如下:

      CREATE SERVER test_oss_server FOREIGN DATA WRAPPER oss
        OPTIONS (EXTRA_SERVER_INFO 
                 '{"oss_bucket":"xxx, "oss_access_key_id":"xxx", "oss_endpoint":"xxx", 
                  "oss_access_key_secret":"xxx", "oss_prefix":"/test/path"}');
      SELECT * FROM mysql.servers;
      CREATE TABLE `test` (...) 
      COMMENT='columnar=1' 
      CONNECTION='test_oss_server/test.orc';

      上述配置用于讀取OSS上/test/path/路徑下的test.orc文件中的數(shù)據(jù) 。如果需要讀取多個文件中的數(shù)據(jù),您可以在建表時指定文件所在目錄,且目錄以“/”結(jié)尾。示例如下:

      CREATE TABLE `test`(...) COMMENT='columnar=1'
      CONNECTION='OSS://${oss_key}:${oss_key_secret}@${endpoint}/${bucket}/orders/2022-09-01/' 

      上述配置用于讀取OSS上orders/2022-09-01/目錄下所有符合條件的文件中的數(shù)據(jù)。

  2. 對接MaxCompute導(dǎo)出數(shù)據(jù)。

    1. 執(zhí)行如下命令,將數(shù)據(jù)寫入OSS

      CREATE EXTERNAL TABLE IF NOT EXISTS mc_oss_orc_external
      (
      vehicleId int,
      recordId int,
      patientId int,
      calls int,
      locationLatitute double,
      locationLongtitue double,
      recordTime string,
      direction string
      )
      STORED AS orc  
      LOCATION 'oss:///${oss_key}:${oss_key_secret}@oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo4/output/';
      INSERT INTO TABLE mc_oss_orc_external SELECT * FROM mc_oss_orc_external;

      上述命令會在output目錄下創(chuàng)建一個名稱為.odps的文件夾,包含.meta文件和保存ORC文件的文件夾。且每執(zhí)行一次寫入操作都會創(chuàng)建一個以日期為前綴的文件夾,來存放最近一次寫入的數(shù)據(jù)。如:output/.odps/20220413*********/****.orc

    2. 以O(shè)DPS(MaxCompute)兼容模式建表和讀取數(shù)據(jù)。示例如下:

      SET imci_oss_scan_odps_compatible=on;
      CREATE FOREIGN TABLE `test` FROM CONNECTION='oss:///${oss_key}:${oss_key_secret}@oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo4/output/' 
      COMMENT='columnar=1';
      
      SELECT count(*) FROM test;
      說明

      開啟ODPS兼容模式讀取數(shù)據(jù)時,只讀最近一次寫入的數(shù)據(jù)。

性能測試

本次將使用TPC-H生成100 GB的數(shù)據(jù),來測試使用列存索引功能查詢OSS上外表中的數(shù)據(jù)的性能。

  • 測試環(huán)境:Ice Lake 32C256 GB nvme本地盤。

  • 關(guān)鍵參數(shù):imci_lru_cache_capacity=6710886400(6.7 GB)

  • 測試結(jié)果:測試結(jié)果請參見下表:

    SQL語句數(shù)量(單位:條)

    執(zhí)行SQL語句耗時(單位:秒)

    1

    38.95

    2

    21.38

    3

    36.96

    4

    23.12

    5

    44.04

    6

    26.31

    7

    43.93

    8

    55.97

    9

    57.36

    10

    11.55

    11

    34.08

    12

    40.05

    13

    21.18

    14

    44.61

    15

    80.16

    16

    10.88

    17

    50.66

    18

    35.57

    19

    53.06

    20

    46.97

    21

    77.30

    22

    8.90