ApsaraDB for SelectDB birleşik sorguları destekler; bu sayede veri gölleri, veritabanları ve uzak dosyalar gibi harici veri kaynaklarını hızla entegre ederek veri analitiğini basitleştirebilir ve hızlandırabilirsiniz. Bu konuda, SelectDB hizmetinin bir katalog kullanarak Hive veri kaynağını nasıl entegre ettiği ve Hive verileri üzerinde birleşik analizlerin nasıl gerçekleştirildiği açıklanmaktadır.
Ön koşullar
-
Hive kümenizdeki tüm düğümlerin SelectDB örneği ile ağ bağlantısının bulunduğundan emin olun.
Hive kümenizdeki tüm düğümler ve SelectDB örneği aynı sanal özel bulut (VPC) içinde yer almalıdır. Farklı VPC'lerde bulunuyorsa öncelikle ağ bağlantısını kurmanız gerekir. Daha fazla bilgi için bkz. ApsaraDB for SelectDB örneği ile bir veri kaynağı arasında bağlantı kurulamazsa ne yapmalıyım?
Hive kümesindeki tüm düğümlerin IP adreslerini SelectDB izin listesine ekleyin. Daha fazla bilgi için bkz. IP adresi izin listesini yapılandırma.
-
Hive kümesinde bir izin listesi mekanizması varsa, SelectDB örneğinin bulunduğu ağın IP CIDR bloklarını Hive kümesinin izin listesine ekleyin.
SelectDB örneğinizin bulunduğu VPC'nin IP aralığını öğrenmek için bkz. ApsaraDB for SelectDB örneğimin bulunduğu VPC'nin IP CIDR bloğunu nasıl bulabilirim?
SelectDB örneğinizin genel IP adresini almak için genel uç noktasına
pingkomutunu çalıştırın SelectDB.
-
Hive ortamınız HDFS üzerine kurulmuşsa Hive ile SelectDB arasındaki veri aktarımı için aşağıdaki bağlantı noktalarının açık olduğundan emin olun.
hive.metastore.urisparametresinde belirtilen bağlantı noktası. Varsayılan bağlantı noktası 9083'tür.dfs.namenode.rpc-addressparametresinde belirtilen bağlantı noktası. Varsayılan bağlantı noktası 8020'dir.dfs.datanode.addressparametresinde belirtilen bağlantı noktası. Varsayılan bağlantı noktası 9866'dır.
Katalog kavramını ve temel işlemleri nasıl gerçekleştireceğinizi anlayın. Daha fazla bilgi için bkz. lakehouse.
Dikkat edilmesi gerekenler
Hive 1, 2 ve 3 sürümleri desteklenir.
Yönetilen tablolar, harici tablolar ve bazı Hive görünümleri desteklenir.
Hive metastore içinde depolanan Hive, Iceberg ve Hudi meta verilerinin keşfi desteklenir.
Şu anda ApsaraDB for SelectDB yalnızca harici bir katalogdaki verilerde okuma işlemlerini destekler.
Örnek ortam
Bu konuda Linux sistemi örnek olarak kullanılmıştır. SelectDB'de, HDFS üzerine kurulu bir Hive kümesindeki test_db.test_t tablosuna karşı birleşik sorgu çalıştırılır. Örnek değerleri kendi sisteminize ve ortamınıza uygun olacak şekilde değiştirin. Örnek ortam aşağıdaki gibidir:
Kullanım durumu: HA olmayan (non-HA)
Hive depolama altyapısı: HDFS
Kaynak veritabanı: test_db
Kaynak tablo: test_t
Kaynak verileri hazırlama
Hive kümenizde oturum açın.
-
test_db adlı bir veritabanı oluşturun.
CREATE database if NOT EXISTS test_db; -
test_t adlı bir tablo oluşturun.
CREATE TABLE IF NOT EXISTS test_t ( id INT, name STRING, age INT ); -
Tabloya veri ekleyin.
-- Insert data INSERT INTO TABLE test_t VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35), (4, 'David', 40), (5, 'Eve', 45);
Yordam
1. Adım: Bir örneğe bağlanma
SelectDB örneğinize bağlanın. Talimatlar için bkz. MySQL istemcisi kullanarak ApsaraDB for SelectDB örneğine bağlanma.
2. Adım: Hive entegrasyonu
SelectDB harici veri kaynaklarını harici bir katalog oluşturarak entegre eder. Farklı kullanım durumları farklı katalog özellikleri gerektirir. Ortamınıza uygun sözdizimini ve parametre değerlerini seçin.
Kataloğu oluşturduktan sonra ApsaraDB for SelectDB veritabanlarını ve tabloları veri kaynağından otomatik olarak senkronize eder. ApsaraDB for SelectDB farklı veri kaynakları ve tablo biçimleri arasındaki sütun eşlemelerini yapar. Hive ile SelectDB arasındaki tür eşlemesine aşina değilseniz bkz. Sütun türü eşleme.
Hive on HDFS
Sözdizimi
CREATE CATALOG <catalog_name> PROPERTIES (
'type'='<type>',
'hive.metastore.uris' = '<hive.metastore.uris>',
'hadoop.username' = '<hadoop.username>',
'dfs.nameservices'='<hadoop.username>',
'dfs.ha.namenodes.your-nameservice'='<dfs.ha.namenodes.your-nameservice>',
'dfs.namenode.rpc-address.your-nameservice.nn1'='<dfs.namenode.rpc-address.your-nameservice.nn1>',
'dfs.namenode.rpc-address.your-nameservice.nn2'='<dfs.namenode.rpc-address.your-nameservice.nn2>',
'dfs.client.failover.proxy.provider.your-nameservice'='<dfs.client.failover.proxy.provider.your-nameservice>'
);
Parametreler
HA olmayan senaryo
Parametre | Gerekli | Açıklama |
catalog_name | Evet | Kataloğun adı. |
type | Evet | Katalog türü. Bu parametreyi |
hive.metastore.uris | Evet | Hive metastore'un URI'si.
|
HA senaryosu
Parametre | Gerekli | Açıklama |
catalog_name | Evet | Kataloğun adı. |
type | Evet | Katalog türü. Bu parametreyi |
hive.metastore.uris | Evet | Hive metastore'un URI'si.
|
hadoop.username | Hayır | HDFS kullanıcı adı. |
dfs.nameservices | Hayır | Ad Hizmeti adı. Bu değer, Hive ortamınızdaki hdfs-site.xml yapılandırma dosyasındaki |
dfs.ha.namenodes.[nameservice ID] | Hayır | NameNode kimliklerinin listesi. Bu değer, Hive ortamınızdaki hdfs-site.xml yapılandırma dosyasındaki karşılık gelen değerle eşleşmelidir. |
dfs.namenode.rpc-address.[nameservice ID].[name node ID] | Hayır | NameNode'un RPC adresi. Adres sayısı NameNode sayısına eşit olmalı ve adresler Hive ortamınızdaki hdfs-site.xml yapılandırma dosyasındaki karşılık gelen yapılandırma öğeleriyle tutarlı olmalıdır. |
dfs.client.failover.proxy.provider.[nameservice ID] | Hayır | HDFS istemcisinin etkin NameNode'a bağlanmak için kullandığı Java sınıfı. Çoğu durumda değer |
HA olmayan senaryo örneği
CREATE CATALOG hive_catalog PROPERTIES (
'type'='hms',
'hive.metastore.uris' = 'thrift://master-1-1.c-7fa25a1a****.cn-hangzhou.emr.aliyuncs.com:9083'
);
Alibaba Cloud OSS üzerinde Hive oluşturma
Sözdizimi
Sözdizimi, HDFS üzerindeki Hive ile aynıdır ancak gerekli parametreler farklıdır.
Parametreler
Parametre | Gerekli | Açıklama |
type | Evet | Katalog türü. Bu parametreyi |
hive.metastore.uris | Evet | Hive metastore'un URI'si.
|
oss.endpoint | Evet | Object Storage Service (OSS) verilerine erişmek için kullanılan |
oss.access_key | Evet | OSS verilerine erişmek için kullanılan |
oss.secret_key | Evet | OSS verilerine erişmek için kullanılan |
Örnek
CREATE CATALOG hive_catalog PROPERTIES (
"type"="hms",
"hive.metastore.uris" = "thrift://172.0.0.1:9083",
"oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
"oss.access_key" = "ak",
"oss.secret_key" = "sk"
);
3. Adım: Katalogları görüntüleme
Kataloğun başarıyla oluşturulduğunu doğrulamak için aşağıdaki ifadeyi çalıştırın.
SHOW CATALOGS; -- Verify whether the catalog is created successfully.
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| CatalogId | CatalogName | Type | IsCurrent | CreateTime | LastUpdateTime | Comment |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 436009309195 | hive_catalog | hms | | 2024-07-19 17:09:08.058 | 2024-07-19 18:04:37 | |
| 0 | internal | internal | yes | UNRECORDED | NULL | Doris internal catalog |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
4. Adım: Hive verilerini görüntüleme
-
Harici katalogdan Hive veritabanlarını ve tablolarını görüntüleyin.
NotBir SelectDB örneğine bağlandığınızda varsayılan çalışma dizini dahili katalogdur.
-
Hedef harici kataloğa geçiş yapın.
SWITCH hive_catalog; -
Verileri görüntüleyin.
Hedef kataloğa geçtikten sonra verilerine dahili katalogdaki gibi erişebilirsiniz. Örneğin:
Veritabanlarını listeleyin:
SHOW DATABASES;Bir veritabanına geçin:
USE test_db;Bir veritabanındaki tabloları listeleyin:
SHOW TABLES;Tablo verilerini sorgulayın:
SELECT * FROM test_t;
-
-
Dahili katalogdan Hive verilerini görüntüleyin.
-- View data from the test_t table in the test_db database under the hive_catalog. SELECT * FROM hive_catalog.test_db.test_t;
Ek işlemler: Veri geçişi
Veri kaynağını entegre ettikten sonra geçmiş verileri Hive'dan SelectDB hizmetine geçirmek için INSERT INTO ifadesini kullanın. Daha fazla bilgi için bkz. INSERT INTO.
Sütun türü eşleme
Aşağıdaki Hive metastore tür eşlemeleri Hive, Iceberg ve Hudi gibi Hive metastore kullanan veri kaynakları için geçerlidir.
-
Hive metastore ve SelectDB için bazı karmaşık türler iç içe geçmeyi destekler.
array<type>:İç içe geçme örneği: array<map<string, int>>map<KeyType, ValueType>:İç içe geçme örneği: map<string, array<int>>struct<col1: Type1, col2: Type2, ...>:İç içe geçme örneği: struct<col1: array<int>, col2: map<int, date>>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|