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

用ClickHouse 文件表引擎快速查詢分析文件數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了用ClickHouse 文件表引擎快速查詢分析文件數(shù)據(jù)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

有時(shí)我們需要快速查詢分析文件數(shù)據(jù),正常流程需要在數(shù)據(jù)庫中創(chuàng)建表,然后利用工具或編碼導(dǎo)入數(shù)據(jù),這時(shí)才能在數(shù)據(jù)庫中查詢分析。利用ClickHouse文件引擎可以快速查詢文件數(shù)據(jù)。本文首先介紹ClickHouse文件引擎,然后介紹如何快速實(shí)現(xiàn)查詢數(shù)據(jù)文件的方案。

ClickHouse 文件引擎

文件表引擎在文件中保存數(shù)據(jù),支持的數(shù)據(jù)格式有:CSV, JSON, XML 等,詳細(xì)內(nèi)容可參考官網(wǎng)文檔。

典型應(yīng)用場景為:

  • 從ClickHouse導(dǎo)出數(shù)據(jù)至文件
  • 對數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換
  • 通過編輯文件更新ClickHouse表數(shù)據(jù)

File表引擎用法

語法如下:

File(Format)

Format 參數(shù)制定一種有效的文件格式。為了執(zhí)行select 查詢,格式必須支持輸入格式,同樣為了insert查詢,需支持輸出。支持的格式類型可參考官網(wǎng)文檔。大部分格式同時(shí)支持輸入和輸出格式,但部分格式僅支持其中之一,如 MySQLDump 僅支持輸入,不支持輸出。

ClickHouse 不允許指定文件路徑,因?yàn)槲募窂绞窃诜?wù)端配置文件path參數(shù)指定。

當(dāng)實(shí)用上面語法創(chuàng)建表時(shí),則會在指定文件夾中創(chuàng)建空的子目錄。寫入數(shù)據(jù)時(shí),會在子目錄中生成data.Format文件。我們可以在服務(wù)端文件系統(tǒng)中手動創(chuàng)建該子目錄,然后ATTACH命令鏈接表信息,也可以從文件中查詢數(shù)據(jù)。但不建議采用該方式,因?yàn)镃lickHouse不跟蹤外部數(shù)據(jù)變化。

舉例

創(chuàng)建 表:file_engine_table,格式為TabSeparated,即數(shù)據(jù)用tab分隔,就是tsv文件格式。

CREATE TABLE file_engine_table (name String, value UInt32) ENGINE=File(TabSeparated)

ClickHouse 缺省在該目錄下創(chuàng)建子目錄: /var/lib/clickhouse/data/default/file_engine_table.

下面手動創(chuàng)建數(shù)據(jù)文件 /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated :

$ cat data.TabSeparated
one 1
two 2

查詢數(shù)據(jù)

SELECT * FROM file_engine_table

┌─name─┬─value─┐
│ one  │     1 │
│ two  │     2 │
└──────┴───────┘

ClickHouse-local工具用法

在clickhouse-local工具,文件引擎除了文件格式參數(shù),還可以指定文件路徑參數(shù)。默認(rèn)輸入/輸出流可以使用數(shù)字或人類可讀的名稱來指定,例如0或stdin, 1或stdout??梢愿鶕?jù)附加的引擎參數(shù)或文件擴(kuò)展名(gz、br或xz)讀寫壓縮文件。

$ echo -e "1,2\n3,4" | clickhouse-local -q "CREATE TABLE table (a Int64, b Int64) ENGINE = File(CSV, stdin); SELECT a, b FROM table; DROP TABLE table"

其他說明

  • 可以并行執(zhí)行多個(gè) SELECT 查詢, 但 INSERT查詢彼此互斥需等待前面操作完成.

  • 支持通過INSERT 查詢創(chuàng)建新文件.

  • 如果文件已存在, INSERT 操作會追加新的內(nèi)容.

  • 雖然支持表分區(qū),但不建議使用,也不會增加查詢效率

  • 不支持操作

    • ALTER
    • SELECT ... SAMPLE
    • Indices
    • Replication

關(guān)于默認(rèn)設(shè)置

  • engine_file_empty_if_not_exists - allows to select empty data from a file that doesn’t exist. Disabled by default.
  • engine_file_truncate_on_insert - allows to truncate file before insert into it. Disabled by default.
  • engine_file_allow_create_multiple_files - allows to create a new file on each insert if format has suffix. Disabled by default.
  • engine_file_skip_empty_files - allows to skip empty files while reading. Disabled by default.
  • storage_file_read_method - method of reading data from storage file, one of: read, pread, mmap. The mmap method does not apply to clickhouse-server (it’s intended for clickhouse-local). Default value: pread for clickhouse-server, mmap for clickhouse-local.

上傳文件直接分析

通過上節(jié)內(nèi)容,我們指定文件表引擎就是在固定路徑下創(chuàng)建子目錄,然后在該子目錄中創(chuàng)建對應(yīng)文件(插入數(shù)據(jù))。我們的需求是快速查詢分析數(shù)據(jù)文件,如csv文件,用戶上傳完就可以分析。

實(shí)現(xiàn)步驟:

  1. 需要一些參數(shù),如表名稱和描述(英文名和中文名),

  2. 用戶上傳csv文件

    • 解析csv文件(讀取第一行作為字段名稱,最好為英文命名,讀取第二行數(shù)據(jù)判斷數(shù)據(jù)類型),如果沒有標(biāo)題行,則自動命名為F1,F2…
    • 使用文件表引擎語法創(chuàng)建表,引用上一步中的參數(shù)信息
    • 在元數(shù)據(jù)中插入表和字段信息,用于自助查詢分析場景
    • 在該表中插入csv文件數(shù)據(jù),動態(tài)生成insert語句。
  3. 查詢該表,也可以執(zhí)行一些統(tǒng)計(jì)查詢語句。

總結(jié)

本文介紹了ClickHouse文件引擎的概念和使用方法。利用文件引擎我們快速實(shí)現(xiàn)對數(shù)據(jù)文件的查詢統(tǒng)計(jì)分析。文章來源地址http://www.zghlxwxcb.cn/news/detail-637173.html

到了這里,關(guān)于用ClickHouse 文件表引擎快速查詢分析文件數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(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)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包