Strops nodrošina SQL tipa vaicājumu valodu ETL mērķim virs Hadoop failu sistēmas.
Hive Query valoda (HiveQL) nodrošina SQL tipa vidi Hive darbam ar tabulām, datu bāzēm, vaicājumiem.
Mums var būt cita veida klauzulas, kas saistītas ar Hive, lai veiktu dažāda veida datu manipulācijas un vaicājumus. Labākai savienojamībai ar dažādiem mezgliem ārpus vides. HIVE nodrošina arī JDBC savienojamību.
Stropu vaicājumi nodrošina šādas funkcijas:
- Datu modelēšana, piemēram, datu bāzu, tabulu izveide utt.
- ETL funkcionalitātes, piemēram, ekstrakcija, pārveidošana un datu ielāde tabulās
- Pievienojas dažādu datu tabulu apvienošanai
- Lietotāja specifiskie pielāgotie skripti koda ērtībai
- Ātrāks vaicājumu rīks virs Hadoop
Šajā rakstā jūs uzzināsiet
- Kārtot pēc vaicājuma
- Grupēt pēc vaicājuma
- Kārtot pēc
- Kopu autors
- Izplatīt pēc
Tabulas izveide stropā
Pirms sākat ar šīs apmācības galveno tēmu, vispirms izveidosim tabulu, lai to izmantotu kā atsauces uz šo apmācību.
Šajā apmācībā mēs izveidosim tabulu "darbiniekiem_guru" ar 6 kolonnām.
No iepriekš redzamā ekrānuzņēmuma
- Mēs veidojam tabulu "darbiniekiem_guru" ar 6 kolonnu vērtībām, piemēram, Id, Vārds, Vecums, Adrese, Alga, Nodaļa, kas pieder darbiniekiem, kuri atrodas organizācijā "guru".
- Šajā solī mēs ielādējam datus tabulā darbinieks_guru. Dati, kurus ielādēsim, tiks ievietoti failā Employees.txt
Kārtot pēc vaicājuma:
Sintakse ORDER BY HiveQL ir līdzīga ORDER BY sintaksei SQL valodā.Kārtot pēc ir klauzula, kuru mēs izmantojam ar “SELECT” priekšrakstu stropu vaicājumos, kas palīdz kārtot datus. Kārtot pēc klauzulas izmantojiet kolonnas Hive tabulās, lai kārtotu noteiktas kolonnu vērtības, kas minētas kopā ar Order by. Neatkarīgi no kolonnas nosaukuma, kurā mēs secību definējam ar klauzulu, vaicājums atlasīs un parādīs rezultātus, augšupejošā vai dilstošā secībā konkrētās kolonnas vērtības.
Ja minētā secība pēc lauka ir virkne, tad rezultāts tiks parādīts leksikogrāfiskā secībā. Aizmugurē tas jāpārnes uz vienu reduktoru.
No ekrāna šāviena Above mēs varam novērot sekojošo
- Tas ir vaicājums, kas tabulā "darbinieks_guru" tiek izpildīts ar klauzulu ORDER BY ar nodaļu, kā noteikts kolonnas nosaukums ORDER BY.
"Departaments" ir virkne, tāpēc tajā tiks rādīti rezultāti, pamatojoties uz leksikogrāfisko secību.
- Šī ir faktiskā vaicājuma izeja. Ja mēs to pareizi novērojam, mēs varam redzēt, ka rezultāti tiek parādīti, pamatojoties uz departamenta sleju, piemēram, ADMIN, Finance un tā tālāk, lai veiktu orderQuery.
Vaicājums:
SELECT * FROM employees_guru ORDER BY Department;
Grupēt pēc vaicājuma:
Grupēt pēc klauzulas izmantojiet kolonnas Hive tabulās, lai grupētu noteiktas kolonnu vērtības, kuras minētas kopā ar grupu. Neatkarīgi no kolonnas nosaukuma mēs definējam klauzulu "groupby", vaicājums atlasīs un parādīs rezultātus, grupējot konkrētās kolonnas vērtības.
Piemēram, zemāk redzamajā ekrānuzņēmumā tas parādīs kopējo darbinieku skaitu katrā nodaļā. Šeit mums ir nodaļa kā grupa pēc vērtības.
No iepriekš minētā ekrānuzņēmuma mēs novērosim sekojošo
- Tas ir vaicājums, kas tiek veikts tabulā "darbinieks_guru" ar klauzulu GROUP BY ar nodaļu, kā noteikts kolonnas nosaukums GROUP BY.
- Šeit parādītais rezultāts ir nodaļas nosaukums, un darbinieki skaita dažādos departamentos. Šeit visi darbinieki, kas pieder konkrētajai nodaļai, tiek grupēti un parādīti rezultātos. Rezultāts ir nodaļas nosaukums ar kopējo darbinieku skaitu katrā nodaļā.
Vaicājums:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Kārtot pēc:
Kārtot pēc klauzulas veic Hive tabulu kolonnu nosaukumus, lai kārtotu izvadi. Mēs varam pieminēt DESC, lai kārtotu secību dilstošā secībā, un ASC - par kārtību Ascending order.
Šādā veidā tas kārtos rindas pirms padeves reduktorā. Vienmēr kārtot pēc kolonnu veida.
Piemēram, ja kolonnu veidi ir skaitliski, tie tiks kārtoti skaitliskā secībā, ja kolonnu veidi ir virknes, tie tiks sakārtoti leksikogrāfiskā secībā.
No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo:
- Tas ir vaicājums, kas, izpildot tabulu "staff_guru" ar klauzulu SORT BY ar "id", definē SORT BY kolonnas nosaukumu. Mēs izmantojām atslēgvārdu DESC.
- Tātad parādītā izeja būs dilstošā secībā pēc "id".
Vaicājums:
SELECT * from employees_guru SORT BY Id DESC;
Kopu autors:
Klasteris Tiek izmantots kā alternatīva Hive-QL klauzulām Distribute BY un Sort BY.
Klastera BY klauzula, kas izmantota stropā esošajām tabulām. Hive izmanto Cluster kolonnas, sadalot rindas starp reduktoriem. Cluster BY kolonnas nonāks vairākos reduktoros.
- Tas nodrošina vairākos reduktoros esošo vērtību kārtošanu
Piemēram, Cluster By klauzula, kas pieminēta tabulas darbinieka_guru slejas Id kolonnā. Izpilde, izpildot šo vaicājumu, sniegs rezultātus vairākiem reduktoriem aizmugurē. Bet kā priekšpuse tā ir alternatīva klauzula gan kārtot, gan izplatīt.
Tas faktiski ir aizmugures process, kad mēs veicam vaicājumu ar kārtošanu pēc, grupēšanas pēc un grupēšanas pēc kartes samazināšanas ietvara. Tātad, ja mēs vēlamies saglabāt rezultātus vairākos reduktoros, mēs izmantojam Cluster By.
No iepriekš minētā ekrānuzņēmuma mēs iegūstam šādus novērojumus:
- Tas ir vaicājums, kas lauka Id vērtībā izpilda klauzulu CLUSTER BY. Šeit tas iegūs kārtojumu par Id vērtībām.
- Tas parāda Id un nosaukumus, kas atrodas guru_employees, sakārtoti pēc
Vaicājums:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Izplatīt pēc:
Izplatiet BY klauzulu, ko izmanto stropā esošajās tabulās. Strops izmanto kolonnas sadaļā Izplatīt, lai rindas sadalītu starp reduktoriem. Visas kolonnas Distribute BY nonāks vienā reduktorā.
- Tas nodrošina, ka katrs no N reduktoriem iegūst kolonnu diapazonus, kas nepārklājas
- Tas nešķiro katra reduktora izvadi
No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo
- SADALĪT PĒC klauzulas, kas tiek izmantota tabulas "empoloyees_guru" ID
- Rezultātā tiek parādīts ID, nosaukums. Aizmugurē tas nonāks pie tā paša reduktora
Vaicājums:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;