Grupowanie w Hive: Utwórz tabelę zbiorczą w Hive

Opublikowany: 2021-02-17

Praca z dużym zbiorem danych może być trudna. Jest wiele rzeczy do śledzenia, a jeden mały błąd może zakłócić cały przepływ pracy. Jednym z najbardziej znanych narzędzi do zarządzania dużymi zestawami danych jest wiadro.

W tym artykule dowiesz się, jak możesz wykonywać zasobniki w Hive. Omówimy wiele implementacji tej funkcji na przykładach.

Spis treści

Co to jest łyżka w ulu?

Bucketing to technika organizacji danych. Podczas gdy partycjonowanie i tworzenie zasobników w programie Hive to dość podobne koncepcje, tworzenie zasobników oferuje dodatkową funkcję dzielenia dużych zestawów danych na mniejsze i łatwiejsze w zarządzaniu zestawy zwane zasobnikami.

Korzystając z zasobników w Hive, możesz rozłożyć zestaw danych tabeli na mniejsze części, co ułatwia ich obsługę. Bucketing umożliwia grupowanie podobnych typów danych i zapisywanie ich w jednym pliku, co zwiększa wydajność podczas łączenia tabel lub odczytywania danych. To jest główny powód, dla którego przez większość czasu używamy wiaderka z partycjonowaniem.

Kiedy używamy łyżek?

Bucketing to bardzo przydatna funkcja. Jeśli nie korzystałeś z niej wcześniej, pamiętaj o następujących kwestiach, aby określić, kiedy użyć tej funkcji:

  • Gdy kolumna ma dużą kardynalność, nie możemy na niej wykonać partycjonowania. Bardzo duża liczba partycji wygeneruje zbyt wiele plików Hadoop, co zwiększy obciążenie węzła. Dzieje się tak, ponieważ węzeł będzie musiał przechowywać metadane każdej partycji, a to wpłynie na wydajność tego węzła.
  • Grupowania należy używać, jeśli zapytania mają kilka sprzężeń po stronie mapy. Łączenie po stronie mapy to proces, w którym łączysz dwie tabele tylko przy użyciu funkcji mapy bez użycia funkcji zmniejszania.

Najważniejsze cechy łyżki w Hive

Bucketing opiera się na funkcji haszującej, więc ma następujące zalety:

  • Funkcja hash_function zależy od rodzaju posiadanej kolumny zbiorczej.
  • Należy pamiętać, że rekordy z tą samą kolumną w zasobniku będą przechowywane w tym samym zasobniku.
  • Ta funkcja wymaga użycia klauzuli Clustered By w celu podzielenia tabeli na segmenty.
  • W katalogu tabeli numeracja zasobników jest oparta na 1, a każdy zasobnik jest plikiem.
  • Wiadro to samodzielna funkcja. Oznacza to, że możesz wykonywać zasobniki bez partycjonowania tabeli.
  • Tabela zbiorcza tworzy prawie równomiernie rozłożone sekcje plików danych.
  • Pamiętaj, że grupowanie nie zapewnia prawidłowego wypełnienia tabeli. Musisz więc samodzielnie zarządzać ładowaniem danych do zasobników, co może być kłopotliwe.

Przeczytaj: Hive kontra Spark

Wiadro w ulu: Przykład #1

Najlepiej byłoby zrozumieć zasobniki w Hive na przykładzie. W naszym przykładzie użyjemy następujących danych:

EMPID IMIĘ NAZWISKO SPORTY MIASTO KRAJ
1001 Szmaragdowy Blair Koszykówka Qutubullapur San Marino
1002 Zephr Stephenson Krykiet Neerharen Republika Dominikany
1003 Jesień Fasola Koszykówka Neerharen Republika Dominikany
1004 Kazimierz Vance Badminton Neerharen Republika Dominikany
1005 Mufutau Flores Qutubullapur San Marino
1006 Ajanna Banki Piłka nożna Neerharen Republika Dominikany
1007 Selma Piłka Tenis ziemny Qutubullapur San Marino
1008 Berk Folarz Badminton Neerharen Republika Dominikany
1009 Imogene Terrell Qutubullapur San Marino
1010 Kolorado Hutchinson Tenis ziemny Qutubullapur San Marino

Nasze przykładowe dane zawierają informacje o pracownikach drużyny sportowej. Jednak część pracowników nie jest częścią żadnego zespołu.

Oto przykładowe dane, które możesz skopiować i wkleić, aby wykorzystać ten przykład:

id, imię, nazwisko, sport, miasto, kraj

1001, Emerry, Blair, koszykówka, Qutubullapur, San Marino

1002, Zephr, Stephenson, Cricket, Neerharen, Dominikana

1003, Jesień, Fasola, Koszykówka, Neerharen, Dominikana

1004, Kasimir, Vance, Badminton, Neerharen, Dominikana

1005, Mufutau, Flores, Qutubullapur, San Marino

1006, Ayanna, Banki, Piłka nożna, Neerharen, Dominikana

1007, Selma, piłka, tenis, Qutubullapur, San Marino;

1008, Berk, Fuller, Badminton, Neerharen, Dominikana

1009, Imogene, Terrell, Qutubullapur, San Marino

1010, Kolorado, Hutchinson, Tenis, Qtubullapur, San Marino

Wiemy już, że grupowanie pozwala nam na grupowanie zbiorów danych w mniejsze sekcje w celu optymalizacji. Omówmy teraz, jak kończy się ten proces:

Tworzenie tabeli podstawowej

Najpierw utworzymy tabelę o nazwie worker_base:

UTWÓRZ TABELĘ db_bdpbase.employee_base (

liczba INT,

imię STRING,

nazwisko STRING,

sportowe STRING,

miasto STRING,

kraj STRING

)

OGRANICZONY FORMAT WIERSZÓW

POLA ZAKOŃCZONE PRZEZ ','

PRZECHOWYWANE JAKO PLIKU TEKSTOWYM

TBLPROPERTIES(„skip.header.line.count”=”1”);

Nasze przykładowe dane mają nagłówek, który nie jest potrzebny do tworzenia grup, więc usuniemy go, dodając właściwość „pomiń nagłówek”.

Ładowanie danych do tabeli bazowej

Użyjemy lokalizacji „/usr/bdp/hive/sample_data.csv” dla naszych przykładowych danych i użyjemy następującego polecenia do załadowania ich do tabeli:

WCZYTAJ DANE INPATH '/user/bdp/hive/sample_data.csv' DO TABELI db_bdpbase.employee_base;

Tworzenie tabeli zbiorczej

W tej sekcji utworzymy tabelę zbiorczą. Teraz możemy zrobić tabelę wiaderkową z przegrodą lub bez przegrody.

Kubełkowy stół z przegrodą

W tym przypadku kraj jest kolumną partycji, a posortowaliśmy kolumnę empid w kolejności rosnącej:

UTWÓRZ TABELĘ db_bdpbase.bucketed_partition_tbl (

empid INT,

imię STRING,

nazwisko STRING,

sportowe STRING,

miasto STRING

) PARTITIONED BY(kraj STRING)

CLASTERED BY (empid)

POsortowane (empid ASC) NA 4 wiadra;

Kubełkowy stół bez przegrody

Alternatywnie możemy stworzyć tabelę wiaderkową bez partycji:

UTWÓRZ TABELĘ db_bdpbase.bucketed_tbl_only (

empid INT,

imię STRING,

nazwisko STRING,

miasto STRING,

Kraj STRING

)

CLASTERED BY (empid)

POsortowane (empid ASC) NA 4 wiadra;

Tutaj umieściliśmy tabelę w tej samej kolumnie empid.

Ustawienie właściwości

Domyślne ustawienie zasobników w Hive jest wyłączone, więc włączyliśmy je, ustawiając jego wartość na true. Następująca właściwość wybierze liczbę klastrów i reduktorów zgodnie z tabelą:

USTAW hive.enforce.bucketing=PRAWDA; (NIE jest potrzebny w Hive 2.x i nowszych)

Ładowanie danych do tabeli zbiorczej

Do tej pory stworzyliśmy dwie tabele zbiorcze i tabelę bazową z naszymi przykładowymi danymi. Teraz załadujemy dane do tabeli zbiorczej z tabeli podstawowej, używając następującego polecenia w tabeli zbiorczej z partycją:

INSERT OVERWRITE TABLE db_bdpbase.bucketed_partition_tbl PARTYCJA (kraj) SELECT * FROM db_bdpbase.employee_base;

Aby załadować dane do tabeli zasobnikowej bez żadnej partycji, użyjemy następującego polecenia:

WSTAW TABELĘ ZASTĄPIENIA db_bdpbase.bucketed_tbl_only SELECT * FROM db_bdpbase.employee_base;

Sprawdzanie danych tabeli zbiorczej

Po załadowaniu danych do tabeli bucketed sprawdzimy, jak są przechowywane w HDFS. Użyjemy następującego kodu, aby sprawdzić tabelę segmentową z partycją:

hadoop fs -ls hdfs://sandbox.hortonworks.com:8020/apps/hive/warehouse/db_bdpbase.db/bucketed_partition_tbl

Przechowywanie danych w tabelach segmentowych

Każdy punkt danych jest mapowany na konkretny zgodnie z następującym wzorem:

tryb hash_function(bucket_column) num_bucket

Rozważmy teraz pierwszą tabelę, którą podzieliliśmy na partycje na podstawie kraju, nasze przykładowe dane zostaną podzielone na następujące sekcje:

EMPID IMIĘ NAZWISKO SPORTY MIASTO KRAJ
1002 Zephr Stephenson Krykiet Neerharen Republika Dominikany
1003 Jesień Fasola Koszykówka Neerharen Republika Dominikany
1004 Kazimierz Vance Badminton Neerharen Republika Dominikany
1006 Ajanna Banki Piłka nożna Neerharen Republika Dominikany
1008 Berk Folarz Badminton Neerharen Republika Dominikany

EMPID IMIĘ NAZWISKO SPORTY MIASTO KRAJ
1001 Szmaragdowy Blair Koszykówka Qutubullapur San Marino
1005 Mufutau Flores Qutubullapur San Marino
1007 Selma Piłka Tenis ziemny Qutubullapur San Marino
1009 Imogene Terrell Qutubullapur San Marino
1010 Kolorado Hutchinson Tenis ziemny Qutubullapur San Marino

W przypadku Dominikany każdy rząd będzie przechowywany w wiadrze:

hash_function(1002) tryb 4 = 2 (Reprezentujący indeks wiadra)

hash_function (1003) tryb 4 = 3

hash_function (1004) tryb 4 = 0

hash_function (1006) tryb 4 = 2

hash_function(1008) tryb 4 = 0

Zauważ, że funkcja hash_function o wartości INT da ci ten sam wynik. Możesz sprawdzić dane w każdym pliku w lokalizacji HDFS. Jeśli chcesz, możesz powtórzyć ten proces dla innych krajów znajdujących się w bazie danych.

Wiadro w ulu: Przykład #2

Ponieważ omówiliśmy już różne etapy i procedury związane z wdrażaniem tej funkcji, możemy ją łatwo wypróbować. Poniżej znajduje się prosty przykład zasobników w programie Hive. Tutaj podzieliliśmy tylko dostępne dane na różne części, dzięki czemu możemy łatwiej nimi zarządzać:

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> utwórz tabelę miesięczna_taxi_fleet6

. . . . . . . . . . . . . . . . . . . . . . .> (miesiąc char(7),flota smallint,firma varchar(50))

. . . . . . . . . . . . . . . . . . . . . . .> pogrupowane według (firmy) w 3 segmenty

. . . . . . . . . . . . . . . . . . . . . . .> przechowywane jako avro;

Przykład użycia Apache Hive w wersji 1.1.0-cdh5.13.1, domyślnie hive.enforce.bucketing=false

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> wstaw do comiesięcznej_taxi_fleet6

. . . . . . . . . . . . . . . . . . . . . . .> wybierz miesiąc,flota,firma z miesięczna_taxi_fleet;

[upgrad@cdh-vm ~]$ hdfs dfs -ls -R /user/hive/magazyn/comiesięczna_taxi_fleet6

-rwxrwxrwt 1 uaktualnienie ul 25483 2017-12-26 10:40 /user/ul/magazyn/monthly_taxi_fleet6/000000_0

— hive.enforce.bucketing: Określa, czy wymuszane są wiaderka. Jeśli prawda, podczas wstawiania do tabeli wymuszane jest tworzenie segmentów.

— Wartość domyślna: Hive 0.x: fałsz, Hive 1.x: fałsz, Hive 2.x: usunięty, dzięki czemu zawsze jest prawdziwy (HIVE-12331)

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> ustaw hive.enforce.bucketing=true;

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> wstaw do comiesięcznej_taxi_fleet6

. . . . . . . . . . . . . . . . . . . . . . .> wybierz miesiąc,flota,firma z miesięczna_taxi_fleet;

[upgrad@cdh-vm ~]$ hdfs dfs -ls -R /user/hive/magazyn/comiesięczna_taxi_fleet6

-rwxrwxrwt 1 uaktualnienie ul 13611 2017-12-26 10:43 /user/ul/magazyn/monthly_taxi_fleet6/000000_0

-rwxrwxrwt 1 uaktualnienie ul 6077 2017-12-26 10:43 /user/ul/magazyn/monthly_taxi_fleet6/000001_0

-rwxrwxrwt 1 uaktualnienie ul 6589 2017-12-26 10:43 /user/ul/magazyn/monthly_taxi_fleet6/000002_0

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> opisz rozszerzoną miesięczną_taxi_fleet6;

+—————————–+—————————————————-+———-+–+

| nazwa_kolumny | typ_danych | komentarz |

+—————————–+—————————————————-+———-+–+

| miesiąc | znak(7) | |

| flota | int | |

| firma | varchar(50) | |

| | NULL | NULL |

| Szczegółowe informacje o tabeli | Table(tableName:monthly_taxi_fleet6, dbName:default, właściciel:upgrad, createTime:1514256031, lastAccessTime:0, retencja:0, sd:StorageDescriptor(cols:[FieldSchema(name:month, type:char(7), comment:null) , FieldSchema(nazwa:fleet, type:smallint, komentarz:null), FieldSchema(nazwa:firma, typ:varchar(50), komentarz:null)], lokalizacja:hdfs://cdh-vm.dbaglobe.com:8020 /user/hive/warehouse/monthly_taxi_fleet6, inputFormat:org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat, skompresowane:Bfalse :3, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.avro.AvroSerDe, parametry:{serialization.format=1}), bucketCols:[firma], sortCols:[], parametry :{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storeAsSubDirectories:false), partitionKeys:[], parameters:{totalSize=26277, numRows=1110, COLSDataS =prawda, liczbaPlików=3, tra nsient_lastDdlTime=1514256192}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) | |

+—————————–+—————————————————-+———-+–+

Wybrano 5 wierszy (0,075 sekundy)

Kasa: podstawowe pytania do wywiadu z ula

Wiadro w ulu: Przykład #3

Poniżej znajduje się trochę zaawansowany przykład czerpania w Hive. Tutaj przeprowadziliśmy partycjonowanie i użyliśmy funkcji Sorted By, aby dane były bardziej dostępne. To jedna z największych zalet łyżki. Możesz go używać z innymi funkcjami, aby wydajniej i efektywniej zarządzać dużymi zestawami danych.

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> utwórz tabelę miesięczna_taxi_fleet7

. . . . . . . . . . . . . . . . . . . . . . .> (miesiąc znak(7), flota mała)

. . . . . . . . . . . . . . . . . . . . . . .> partycjonowane przez (firma varchar(50))

. . . . . . . . . . . . . . . . . . . . . . .> pogrupowane według (miesiąc) posortowane według (miesiąc)na 3 segmenty

. . . . . . . . . . . . . . . . . . . . . . .> przechowywane jako avro;

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> wstaw do comiesięcznej_taxi_fleet7

. . . . . . . . . . . . . . . . . . . . . . .> partycja (firma)

. . . . . . . . . . . . . . . . . . . . . . .> wybierz miesiąc,flota,firma z miesięczna_taxi_fleet;

[upgrad@cdh-vm ~]$ hdfs dfs -ls -R /user/hive/magazyn/comiesięczna_taxi_fleet7

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/comiesięczna_taxi_fleet7/firma=CityCab

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=CityCab/000000_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=CityCab/000001_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=CityCab/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/firma=Komfort

-rwxrwxrwt 1 upgrad ula 913 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Comfort/000000_0

-rwxrwxrwt 1 upgrad ula 913 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Comfort/000001_0

-rwxrwxrwt 1 uaktualnienie ul 913 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=Komfort/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Individual Yellow- Top

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Indywidualny żółty- Top/000000_0

-rwxrwxrwt 1 upgrad ula 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Indywidualny żółty- Top/000001_0

-rwxrwxrwt 1 upgrad ula 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Indywidualny żółty- Top/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=Premier

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier/000000_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier/000001_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/firma=Prime

-rwxrwxrwt 1 uaktualnienie ul 765 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Prime/000000_0

-rwxrwxrwt 1 upgrad ula 765 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Prime/000001_0

-rwxrwxrwt 1 uaktualnienie ul 766 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=Prime/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/firma=SMRT

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=SMRT/000000_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=SMRT/000001_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=SMRT/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/firma=Smart

-rwxrwxrwt 1 uaktualnienie ul 720 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Smart/000000_0

-rwxrwxrwt 1 uaktualnienie ul 719 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Smart/000001_0

-rwxrwxrwt 1 uaktualnienie ul 719 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=Smart/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/firma=TransCab

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=TransCab/000000_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=TransCab/000001_0

-rwxrwxrwt 1 uaktualnienie ul 865 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=TransCab/000002_0

drwxrwxrwt – aktualizacja ula 0 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=YTC

-rwxrwxrwt 1 uaktualnienie ul 432 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=YTC/000000_0

-rwxrwxrwt 1 uaktualnienie ul 432 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=YTC/000001_0

-rwxrwxrwt 1 uaktualnienie ul 432 2017-12-26 11:05 /user/ul/magazyn/monthly_taxi_fleet7/company=YTC/000002_0

Dowiedz się więcej o partycjonowaniu i podziale w Hive

W przykładach, które udostępniliśmy wcześniej, wykonaliśmy partycjonowanie i gromadzenie w Hive na wiele sposobów i dowiedzieliśmy się, jak można je zaimplementować w Hive. Jednak Apache Hive ma wiele innych funkcji, a poznanie ich wszystkich może być dość zniechęcające.

Dlatego zalecamy wzięcie udziału w kursie inżynierii danych. Umożliwiłoby to studiowanie od ekspertów branżowych, którzy spędzili lata w tej branży. Kurs zapewnia ustrukturyzowany program nauczania, w którym uczysz się wszystkiego krok po kroku. W upGrad oferujemy dedykowane kursy inżynierii danych .

Dzięki naszym kursom uzyskasz dostęp do Studenckiego kącika sukcesu upGrad, w którym otrzymasz spersonalizowane informacje zwrotne na temat CV, przygotowanie do rozmowy kwalifikacyjnej, doradztwo zawodowe i wiele innych korzyści.

Po ukończeniu kursu będziesz wykwalifikowanym specjalistą w zakresie inżynierii danych.

Wniosek

Wiaderko w Hive jest bardzo proste i łatwe do wykonania. Jest to z pewnością przydatna funkcja w przypadku dużych zbiorów danych. Jednak gdy wykonujesz zarówno partycjonowanie, jak i grupowanie w Hive razem, możesz bardzo łatwo zarządzać dość ogromnymi zestawami danych.

Jeśli chcesz dowiedzieć się więcej o programie Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zapewnia 7+ studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne ręce- na warsztatach, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.

Jeśli masz jakieś pytania lub przemyślenia dotyczące wiaderka, podziel się nimi w komentarzach poniżej. Chcielibyśmy usłyszeć od ciebie.

Sprawdź nasze inne kursy inżynierii oprogramowania w upGrad.

Podnieś swoje umiejętności i przygotuj się na przyszłość

Zaawansowany program certyfikacji w Big Data z IIIT Bangalore