Hive에서 버킷팅: Hive에서 버킷 테이블 생성

게시 됨: 2021-02-17

큰 데이터 세트로 작업하는 것은 어려울 수 있습니다. 추적해야 할 것이 많고 작은 오류 하나가 전체 워크플로를 방해할 수 있습니다. 대규모 데이터 세트를 관리하기 위한 가장 눈에 띄는 도구 중 하나는 버킷팅입니다.

이 문서에서는 Hive에서 버킷팅을 수행하는 방법에 대해 설명합니다. 예제를 통해 이 함수의 여러 구현을 살펴보겠습니다.

목차

Hive에서 버킷팅이란 무엇입니까?

버킷팅은 데이터 구성 기술입니다. Hive의 파티셔닝과 버킷팅은 매우 유사한 개념이지만 버킷팅은 대규모 데이터 세트를 버킷이라는 더 작고 관리하기 쉬운 세트로 나누는 추가 기능을 제공합니다.

Hive에서 버킷팅을 사용하면 테이블 데이터 세트를 더 작은 부분으로 분해하여 더 쉽게 처리할 수 있습니다. 버킷팅을 사용하면 유사한 데이터 유형을 그룹화하고 단일 파일에 쓸 수 있으므로 테이블을 조인하거나 데이터를 읽는 동안 성능이 향상됩니다. 이것이 우리가 대부분의 경우 파티셔닝과 함께 버킷팅을 사용하는 큰 이유입니다.

버킷팅은 언제 사용합니까?

버킷팅은 매우 유용한 기능입니다. 이전에 사용하지 않은 경우 이 기능을 사용할 시기를 결정할 때 다음 사항을 염두에 두어야 합니다.

  • 열의 카디널리티가 높으면 파티션을 수행할 수 없습니다. 매우 많은 수의 파티션은 노드의 로드를 증가시키는 너무 많은 Hadoop 파일을 생성합니다. 이는 노드가 모든 파티션의 메타데이터를 유지해야 하고 해당 노드의 성능에 영향을 미치기 때문입니다.
  • 쿼리에 여러 맵 측 조인이 있는 경우 버킷팅을 사용해야 합니다. 맵 측 조인은 리듀스 기능을 사용하지 않고 맵 기능만 사용하여 두 테이블을 조인하는 프로세스입니다.

Hive에서 버킷팅의 하이라이트

버킷팅은 해싱 기능을 기반으로 하므로 다음과 같은 하이라이트가 있습니다.

  • hash_function은 보유하고 있는 버킷팅 열의 종류에 따라 다릅니다.
  • 동일한 버킷 열이 있는 레코드는 동일한 버킷에 저장된다는 점에 유의해야 합니다.
  • 이 함수를 사용하려면 Clustered By 절을 사용하여 테이블을 버킷으로 나누어야 합니다.
  • 테이블 디렉토리에서 버킷 번호는 1부터 시작하며 모든 버킷은 파일입니다.
  • 버킷팅은 독립 실행형 기능입니다. 즉, 테이블에서 파티션을 나누지 않고도 버킷팅을 수행할 수 있습니다.
  • 버킷 테이블은 거의 균등하게 분산된 데이터 파일 섹션을 생성합니다.
  • 버킷팅이 테이블이 제대로 채워지는 것을 보장하지 않는다는 점에 유의하십시오. 따라서 버킷으로의 데이터 로드를 직접 관리해야 하므로 번거로울 수 있습니다.

읽기: 하이브 대 스파크

Hive의 버킷팅: 예제 #1

예제를 사용하여 Hive의 버킷팅을 이해하는 것이 가장 좋습니다. 이 예에서는 다음 데이터를 사용합니다.

EMPID 이름 스포츠 도시 국가
1001 에머리 블레어 농구 꾸투불라푸르 산 마리노
1002 제프 스티븐슨 크리켓 니르하렌 도미니카 공화국
1003 가을 농구 니르하렌 도미니카 공화국
1004 카시미르 밴스 배드민턴 니르하렌 도미니카 공화국
1005 무후타우 플로레스 꾸투불라푸르 산 마리노
1006 아야나 은행 축구 니르하렌 도미니카 공화국
1007 셀마 테니스 꾸투불라푸르 산 마리노
1008 버크 풀러 배드민턴 니르하렌 도미니카 공화국
1009 이모진 테렐 꾸투불라푸르 산 마리노
1010 콜로라도 허친슨 테니스 꾸투불라푸르 산 마리노

샘플 데이터에는 스포츠 팀의 직원 정보가 포함되어 있습니다. 그러나 일부 직원은 어떤 팀에도 속하지 않습니다.

다음은 이 예에 따라 복사하여 붙여넣을 수 있는 샘플 데이터입니다.

아이디,이름,성,스포츠,도시,국가

1001, 에머리, 블레어, 농구, 꾸투불라푸르, 산마리노

1002, Zephr, Stephenson, Cricket, 니르하렌, 도미니카 공화국

1003, 가을, 콩, 농구, 니르하렌, 도미니카 공화국

1004, Kasimir, Vance, 배드민턴, 니르하렌, 도미니카 공화국

1005, Mufutau, Flores, 꾸투불라푸르, 산마리노

1006, Ayanna, Banks, 축구, 니르하렌, 도미니카 공화국

1007,셀마,공,테니스,쿠투불라푸르,산마리노

1008, Berk, Fuller, 배드민턴, Neerharen, 도미니카 공화국

1009,Imogene,Terrell,Qutubullapur,산마리노

1010,콜로라도,허친슨,테니스,쿠투불라푸르,산마리노

버킷팅을 통해 최적화를 위해 데이터 세트를 더 작은 섹션으로 클러스터링할 수 있다는 것을 이미 알고 있습니다. 이제 이 프로세스를 완료하는 방법에 대해 논의해 보겠습니다.

기본 테이블 생성

먼저 employee_base라는 테이블을 생성합니다.

테이블 생성 db_bdpbase.employee_base(

구현된 INT,

이름 STRING,

성 STRING,

스포츠 STRING,

도시 STRING,

국가 STRING

)

행 형식 구분

','로 종료되는 필드

텍스트 파일로 저장

TBLPROPERTIES("skip.header.line.count"="1");

샘플 데이터에는 버킷팅에 필요하지 않은 헤더가 있으므로 'skip header' 속성을 추가하여 제거합니다.

기본 테이블에 데이터 로드

샘플 데이터에 '/usr/bdp/hive/sample_data.csv' 위치를 사용하고 다음 명령을 사용하여 테이블에 로드합니다.

로드 데이터 INPATH '/user/bdp/hive/sample_data.csv' INTO TABLE db_bdpbase.employee_base;

버킷 테이블 생성

이 섹션에서는 버킷 테이블을 생성합니다. 이제 파티션이 있거나 없는 버킷 테이블을 만들 수 있습니다.

파티션이 있는 버킷 테이블

이 경우 국가는 파티션 열이고 우리는 오름차순으로 정렬한 empid 열을 버킷화했습니다.

테이블 생성 db_bdpbase.bucketed_partition_tbl(

빈 INT,

이름 STRING,

성 STRING,

스포츠 STRING,

도시 STRING

) PARTITIONED BY(국가 STRING)

클러스터링 BY(empid)

4개의 버킷으로 정렬(empid ASC)

파티션이 없는 버킷 테이블

또는 파티션이 없는 버킷 테이블을 생성할 수 있습니다.

테이블 생성 db_bdpbase.bucketed_tbl_only(

빈 INT,

이름 STRING,

성 STRING,

도시 STRING,

국가 STRING

)

클러스터링 BY(empid)

4개의 버킷으로 정렬(empid ASC)

여기에서 동일한 열 empid에 있는 테이블을 버킷화했습니다.

속성 설정

Hive의 버킷팅에 대한 기본 설정은 비활성화되어 있으므로 값을 true로 설정하여 활성화했습니다. 다음 속성은 테이블에 따라 클러스터 및 감속기의 수를 선택합니다.

SET hive.enforce.bucketing=TRUE; (Hive 2.x 이상에서는 필요하지 않음)

버킷 테이블에 데이터 로드

지금까지 샘플 데이터로 두 개의 버킷 테이블과 기본 테이블을 만들었습니다. 이제 파티션이 있는 버킷 테이블에서 다음 명령을 사용하여 기본 테이블에서 버킷 테이블로 데이터를 로드합니다.

INSERT OVERWRITE TABLE db_bdpbase.bucketed_partition_tbl PARTITION(국가) SELECT * FROM db_bdpbase.employee_base;

파티션 없이 버킷 테이블에 데이터를 로드하려면 다음 명령을 사용합니다.

INSERT OVERWRITE TABLE db_bdpbase.bucketed_tbl_only SELECT * FROM db_bdpbase.employee_base;

버킷 테이블 데이터 확인

버킷 테이블에 데이터를 로드한 후 HDFS에 어떻게 저장되는지 확인합니다. 다음 코드를 사용하여 파티션이 있는 버킷 테이블을 확인합니다.

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

버킷 테이블의 데이터 스토리지

모든 데이터 포인트는 다음 공식에 따라 특정 포인트에 매핑됩니다.

hash_function(bucket_column) 모드 num_bucket

이제 국가를 기준으로 분할한 첫 번째 테이블을 고려하면 샘플 데이터가 다음 섹션으로 나뉩니다.

EMPID 이름 스포츠 도시 국가
1002 제프 스티븐슨 크리켓 니르하렌 도미니카 공화국
1003 가을 농구 니르하렌 도미니카 공화국
1004 카시미르 밴스 배드민턴 니르하렌 도미니카 공화국
1006 아야나 은행 축구 니르하렌 도미니카 공화국
1008 버크 풀러 배드민턴 니르하렌 도미니카 공화국

EMPID 이름 스포츠 도시 국가
1001 에머리 블레어 농구 꾸투불라푸르 산 마리노
1005 무후타우 플로레스 꾸투불라푸르 산 마리노
1007 셀마 테니스 꾸투불라푸르 산 마리노
1009 이모진 테렐 꾸투불라푸르 산 마리노
1010 콜로라도 허친슨 테니스 꾸투불라푸르 산 마리노

도민카 공화국의 경우 모든 행이 버킷에 저장됩니다.

hash_function(1002) 모드 4 = 2 (버킷의 인덱스를 나타냄)

hash_function(1003) 모드 4 = 3

hash_function(1004) 모드 4 = 0

hash_function(1006) 모드 4 = 2

hash_function(1008) 모드 4 = 0

INT 값의 hash_function은 동일한 결과를 제공합니다. HDFS 위치에서 모든 파일의 데이터를 확인할 수 있습니다. 원하는 경우 데이터베이스에 있는 다른 국가에 대해 이 프로세스를 반복할 수 있습니다.

Hive의 버킷팅: 예제 #2

이 기능을 구현하는 다양한 단계와 절차를 이미 다루었으므로 쉽게 시도해 볼 수 있습니다. 다음은 Hive에서 버킷팅의 간단한 예입니다. 여기에서는 사용 가능한 데이터만 다른 부분으로 버킷화하여 더 쉽게 관리할 수 있습니다.

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def>monthly_taxi_fleet6 테이블 생성

. . . . . . . . . . . . . . . . . . . . . . .> (월 char(7), 플릿 smallint, 회사 varchar(50))

. . . . . . . . . . . . . . . . . . . . . . .> (회사)가 3개의 버킷으로 클러스터링

. . . . . . . . . . . . . . . . . . . . . . .> avro로 저장됨;

Apache Hive 버전 1.1.0-cdh5.13.1을 사용하는 예, 기본적으로 hive.enforce.bucketing=false

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def>monthly_taxi_fleet6에 삽입

. . . . . . . . . . . . . . . . . . . . . . .>month,fleet,company를monthly_taxi_fleet에서 선택하십시오.

[upgrad@cdh-vm ~]$ hdfs dfs -ls -R /user/hive/warehouse/monthly_taxi_fleet6

-rwxrwxrwt 1 업그레이드 하이브 25483 2017-12-26 10:40 /user/hive/warehouse/monthly_taxi_fleet6/000000_0

— hive.enforce.bucketing: 버킷팅 적용 여부입니다. true이면 테이블에 삽입하는 동안 버킷팅이 적용됩니다.

— 기본값: Hive 0.x: false, Hive 1.x: false, Hive 2.x: 제거되어 효과적으로 항상 true로 만듭니다(HIVE-12331).

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

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def>monthly_taxi_fleet6에 삽입

. . . . . . . . . . . . . . . . . . . . . . .>month,fleet,company를monthly_taxi_fleet에서 선택하십시오.

[upgrad@cdh-vm ~]$ hdfs dfs -ls -R /user/hive/warehouse/monthly_taxi_fleet6

-rwxrwxrwt 1 업그레이드 하이브 13611 2017-12-26 10:43 /user/hive/warehouse/monthly_taxi_fleet6/000000_0

-rwxrwxrwt 1 업그레이드 하이브 6077 2017-12-26 10:43 /user/hive/warehouse/monthly_taxi_fleet6/000001_0

-rwxrwxrwt 1 업그레이드 하이브 6589 2017-12-26 10:43 /user/hive/warehouse/monthly_taxi_fleet6/000002_0

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def> 확장month_taxi_fleet6 설명;

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

| col_name | 데이터 유형 | 코멘트 |

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

| | 문자(7) | |

| 함대 | 정수 | |

| 회사 | varchar(50) | |

| | | |

| 상세 테이블 정보 | Table(tableName:monthly_taxi_fleet6, dbName:default, owner:upgrad, createTime:1514256031, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:month, type:char(7), comment:null) , FieldSchema(name:fleet, type:smallint, comment:null), FieldSchema(name:company, type:varchar(50), comment:null)], location: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, 압축: false, numBuckets :3, serdeInfo:SerDeInfo(이름:null, serializationLib:org.apache.hadoop.hive.serde2.avro.AvroSerDe, 매개변수:{serialization.format=1}), bucketCols:[회사], sortCols:[], 매개변수 :{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], 매개 변수:{totalSize=26277, numRowsACC=1128, rawData_COLUMUNATE_SSTAT =true, numFiles=3, tra nsient_lastDdlTime=1514256192}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) | |

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

5개 행 선택(0.075초)

체크아웃: 기본 Hive 인터뷰 질문

Hive의 버킷팅: 예제 #3

다음은 Hive의 버킷팅에 대한 약간의 고급 예입니다. 여기서는 파티션을 수행하고 Sorted By 기능을 사용하여 데이터에 더 쉽게 액세스할 수 있도록 했습니다. 이것은 버켓팅의 가장 큰 장점 중 하나입니다. 다른 기능과 함께 사용하여 대규모 데이터 세트를 보다 효율적이고 효과적으로 관리할 수 있습니다.

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def>monthly_taxi_fleet7 테이블 생성

. . . . . . . . . . . . . . . . . . . . . . .> (월 char(7), 함대 smallint)

. . . . . . . . . . . . . . . . . . . . . . .> 파티션(회사 varchar(50))

. . . . . . . . . . . . . . . . . . . . . . .> (월)별로 클러스터링됨 (월)별로 3개의 버킷으로 정렬됨

. . . . . . . . . . . . . . . . . . . . . . .> avro로 저장됨;

0: jdbc:hive2://cdh-vm.dbaglobe.com:10000/def>monthly_taxi_fleet7에 삽입

. . . . . . . . . . . . . . . . . . . . . . .> 파티션(회사)

. . . . . . . . . . . . . . . . . . . . . . .>month,fleet,company를monthly_taxi_fleet에서 선택하십시오.

[upgrad@cdh-vm ~]$ hdfs dfs -ls -R /user/hive/warehouse/monthly_taxi_fleet7

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=CityCab

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=CityCab/000000_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=CityCab/000001_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=CityCab/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Comfort

-rwxrwxrwt 1 업그레이드 하이브 913 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Comfort/000000_0

-rwxrwxrwt 1 업그레이드 하이브 913 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Comfort/000001_0

-rwxrwxrwt 1 업그레이드 하이브 913 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Comfort/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=개별 노란색- 상단

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=개별 노란색- 상단/000000_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=개별 노란색- 상단/000001_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=개별 노란색- 상단/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier/000000_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier/000001_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Premier/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Prime

-rwxrwxrwt 1 업그레이드 하이브 765 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Prime/000000_0

-rwxrwxrwt 1 업그레이드 하이브 765 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Prime/000001_0

-rwxrwxrwt 1 업그레이드 하이브 766 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Prime/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=SMRT

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=SMRT/000000_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=SMRT/000001_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=SMRT/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Smart

-rwxrwxrwt 1 업그레이드 하이브 720 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Smart/000000_0

-rwxrwxrwt 1 업그레이드 하이브 719 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Smart/000001_0

-rwxrwxrwt 1 업그레이드 하이브 719 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=Smart/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=TransCab

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=TransCab/000000_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=TransCab/000001_0

-rwxrwxrwt 1 업그레이드 하이브 865 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=TransCab/000002_0

drwxrwxrwt – 하이브 업그레이드 0 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=YTC

-rwxrwxrwt 1 업그레이드 하이브 432 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=YTC/000000_0

-rwxrwxrwt 1 업그레이드 하이브 432 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=YTC/000001_0

-rwxrwxrwt 1 업그레이드 하이브 432 2017-12-26 11:05 /user/hive/warehouse/monthly_taxi_fleet7/company=YTC/000002_0

Hive의 파티셔닝 및 버킷팅에 대해 자세히 알아보기

이전에 공유한 예제에서 Hive에서 여러 가지 방법으로 파티셔닝 및 버킷팅을 수행하고 Hive에서 구현하는 방법에 대해 배웠습니다. 그러나 Apache Hive에는 다른 많은 기능이 있으며 모든 기능에 대해 배우는 것은 상당히 어려울 수 있습니다.

그렇기 때문에 데이터 엔지니어링 과정을 수강하는 것이 좋습니다. 이 업계에서 수년을 보낸 업계 전문가로부터 공부할 수 있습니다. 과정은 모든 것을 단계별로 배울 수 있는 구조화된 커리큘럼을 제공합니다. upGrad에서는 전용 데이터 엔지니어링 과정 을 제공 합니다.

저희 과정을 통해 개인화된 이력서 피드백, 면접 준비, 진로 상담 및 기타 많은 이점을 얻을 수 있는 upGrad의 학생 성공 코너에 액세스할 수 있습니다.

과정을 마치면 숙련된 데이터 엔지니어링 전문가가 됩니다.

결론

Hive에서 버킷팅은 매우 간단하고 수행하기 쉽습니다. 확실히 대용량 데이터셋에 유용한 기능입니다. 그러나 Hive에서 파티셔닝과 버킷팅을 함께 수행하면 매우 방대한 데이터 세트를 매우 쉽게 관리할 수 있습니다.

빅 데이터 프로그램에 대해 더 알고 싶으시면 PG 디플로마 소프트웨어 개발 전문 빅 데이터 프로그램을 확인하세요. 이 프로그램은 실무 전문가를 위해 설계되었으며 7개 이상의 사례 연구 및 프로젝트를 제공하고 14개 프로그래밍 언어 및 도구, 실용적인 실습을 다룹니다. 워크샵, 400시간 이상의 엄격한 학습 및 최고의 기업과의 취업 지원.

버킷팅에 대한 질문이나 생각이 있으면 아래 의견에 공유하세요. 여러분의 의견을 듣고 싶습니다.

upGrad에서 다른 소프트웨어 엔지니어링 과정을 확인하십시오.

자신의 기술을 향상시키고 미래를 준비하십시오

IIT Bangalore의 빅 데이터 고급 인증 프로그램