Teknologian jakaminen

Hive-osiopöytä

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Osiotaulukko:

Se on Hiven taulukkotyyppi Jakamalla taulukon tiedot useisiin osajoukkoon (osioihin), jokainen osio vastaa tiettyä sarakkeen arvoa taulukossa, kyselyn suorituskykyä ja tiedonhallinnan tehokkuutta voidaan parantaa. Osioidun taulukon jokainen osio on tallennettu erilliseen hakemistoon, ja osio määritellään yhden tai useamman taulukon sarakkeen perusteella. Osioitujen taulukoiden käytön päätarkoitus on vähentää kyselyillä tarkistettavan tiedon määrää, mikä parantaa kyselyn tehokkuutta.

Liiallinen osiointi voi aiheuttaa suuren määrän pieniä tiedostoja, mikä vaikuttaa HDFS:n suorituskykyyn ja MapReduce-tehtävien tehokkuuteen. Pienet tiedostojen yhdistämistoiminnot on suoritettava säännöllisesti.

  1. CREATE TABLE customer_data (
  2. customer_id STRING,
  3. name STRING,
  4. age INT,
  5. email STRING
  6. )
  7. PARTITIONED BY (city STRING)
  8. STORED AS ORC;
  9. select *
  10. from customer_data;
  11. -- 插入 New York 的数据
  12. INSERT INTO TABLE customer_data PARTITION (city='New York')
  13. VALUES
  14. ('1', 'John Doe', 30, '[email protected]'),
  15. ('2', 'Jane Smith', 25, '[email protected]'),
  16. ('3', 'Bob Johnson', 40, '[email protected]');
  17. -- 插入 Los Angeles 的数据
  18. INSERT INTO TABLE customer_data PARTITION (city='Los Angeles')
  19. VALUES
  20. ('4', 'Alice Brown', 32, '[email protected]'),
  21. ('5', 'Charlie Davis', 28, '[email protected]');
  22. -- 插入 Chicago 的数据
  23. INSERT INTO TABLE customer_data PARTITION (city='Chicago')
  24. VALUES
  25. ('6', 'Eve White', 45, '[email protected]'),
  26. ('7', 'Frank Black', 37, '[email protected]');

Voit nähdä, että HDFS:lle on luotu kolme hakemistoa, jotka vastaavat kolmea osiota. Valitse, missä ehdoilla kysely etsii tietoja suoraan vastaavista osiohakemistoista, mikä vähentää kyselyn tarkistamien tietojen määrää ja parantaa suorituskykyä.

SELECT * FROM customer_data WHERE city='New York';

2. Kauhapöytä:

Se on toinen taulukkotyyppi Hiven tiivistämällä tiedot taulukossa, kyselyn suorituskykyä voidaan edelleen parantaa, etenkin kun suoritetaan liitos- ja yhdistämistoimintoja. Säilöntätaulukot jakavat tiedot kiinteään määrään säilöitä, ja kukin segmentti tallennetaan erilliseen tiedostoon.
--------------------------------------------------- -Ämpäripöydän ominaisuudet--------------------------------------------- --------
Tietojen osiointi: Jaa tiedot kiinteään määrään ryhmiä yhden tai useamman sarakkeen hash-arvon perusteella.
Tiedoston tallennus: Kunkin ämpärin tiedot tallennetaan erilliseen tiedostoon.
Tasainen jakautuminen: Ihannetapauksessa tiedot jakautuvat tasaisesti kaikkiin ryhmiin, mikä parantaa kyselyn suorituskykyä.

  1. CREATE TABLE customer_data2 (
  2. customer_id STRING,
  3. name STRING,
  4. age INT,
  5. email STRING
  6. )
  7. CLUSTERED BY (customer_id) INTO 4 BUCKETS
  8. STORED AS ORC;
  9. -- 插入数据到分桶表
  10. --通过这些步骤,我们创建了一个按 customer_id 列进行分桶的 Hive 表 customer_data,并插入了具体的数据。
  11. INSERT INTO TABLE customer_data2 VALUES
  12. ('1', 'John Doe', 30, '[email protected]'),
  13. ('2', 'Jane Smith', 25, '[email protected]'),
  14. ('3', 'Bob Johnson', 40, '[email protected]'),
  15. ('4', 'Alice Brown', 32, '[email protected]'),
  16. ('5', 'Charlie Davis', 28, '[email protected]'),
  17. ('6', 'Eve White', 45, '[email protected]'),
  18. ('7', 'Frank Black', 37, '[email protected]'),
  19. ('8', 'Grace Green', 22, '[email protected]');
  20. select *
  21. from customer_data2;

Tarkastelemalla polkua HDFS:ssä voimme nähdä, että tiedot jaetaan eri ryhmiin vastaavan sarakkeen hash-arvon mukaan.