* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
4.2 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
36 | HDFS |
HDFS
Bu motor ile entegrasyon sağlar Apache Hadoop üzerinde veri Yönet allowingilmesine izin vererek ekosist dataem HDFSClickHouse aracılığıyla. Bu motor benzer to the Dosya ve URL motorlar, ancak hadoop özgü özellikleri sağlar.
Kullanma
ENGINE = HDFS(URI, format)
Bu URI
parametre, HDFS'DEKİ tüm dosya URI'SIDIR.
Bu format
parametre kullanılabilir dosya biçimlerinden birini belirtir. Gerçekleştirmek
SELECT
sorgular, biçim giriş için desteklenmeli ve gerçekleştirmek için
INSERT
queries – for output. The available formats are listed in the
Biçimliler bölme.
Yol kısmı URI
globs içerebilir. Bu durumda tablo salt okunur olurdu.
Örnek:
1. Set up the hdfs_engine_table
Tablo:
CREATE TABLE hdfs_engine_table (name String, value UInt32) ENGINE=HDFS('hdfs://hdfs1:9000/other_storage', 'TSV')
2. Fil filel file:
INSERT INTO hdfs_engine_table VALUES ('one', 1), ('two', 2), ('three', 3)
3. Verileri sorgula:
SELECT * FROM hdfs_engine_table LIMIT 2
┌─name─┬─value─┐
│ one │ 1 │
│ two │ 2 │
└──────┴───────┘
Uygulama Detayları
- Okuma ve yazma paralel olabilir
- Desteklenmiyor:
ALTER
veSELECT...SAMPLE
harekat.- Dizinler.
- Çoğalma.
Yolda Globs
Birden çok yol bileşenleri globs olabilir. İşlenmek için dosya var olmalı ve tüm yol deseniyle eşleşmelidir. Sırasında dosyaların listelen ofmesini belirler SELECT
(not at CREATE
an).
*
— Substitutes any number of any characters except/
boş dize dahil.?
— Substitutes any single character.{some_string,another_string,yet_another_one}
— Substitutes any of strings'some_string', 'another_string', 'yet_another_one'
.{N..M}
— Substitutes any number in range from N to M including both borders.
İle yapılar {}
benzer olan uzak tablo işlevi.
Örnek
- HDFS'DE aşağıdaki Urı'lerle TSV formatında birkaç dosyamız olduğunu varsayalım:
- ‘hdfs://hdfs1:9000/some_dir/some_file_1’
- ‘hdfs://hdfs1:9000/some_dir/some_file_2’
- ‘hdfs://hdfs1:9000/some_dir/some_file_3’
- ‘hdfs://hdfs1:9000/another_dir/some_file_1’
- ‘hdfs://hdfs1:9000/another_dir/some_file_2’
- ‘hdfs://hdfs1:9000/another_dir/some_file_3’
- Altı dosyadan oluşan bir tablo oluşturmanın birkaç yolu vardır:
CREATE TABLE table_with_range (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV')
Başka bir yol:
CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/some_file_?', 'TSV')
Tablo, her iki dizindeki tüm dosyalardan oluşur (tüm dosyalar, sorguda açıklanan biçimi ve şemayı karşılamalıdır):
CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV')
!!! warning "Uyarıcı"
Dosyaların listelenmesi, önde gelen sıfırlarla sayı aralıkları içeriyorsa, her basamak için parantez içeren yapıyı ayrı ayrı kullanın veya kullanın ?
.
Örnek
Adlı dosyaları içeren tablo oluşturma file000
, file001
, … , file999
:
CREARE TABLE big_table (name String, value UInt32) ENGINE = HDFS('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV')
Sanal Sütunlar
_path
— Path to the file._file
— Name of the file.
Ayrıca Bakınız