Spark 설치 https://spark.apache.org/downloads.html Downloads | Apache Spark Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS by following these procedures. Note that Spark 3 is pre-built with Scala 2.12 in general and Spark 3.2+ provides spark.apache.org 위 링크로 이동하여 아래 1,2번과 같이 버전을 맞춰주고, 3. Download spark 링크..
Apache Spark Spark MapReduce 형태의 클러스터 컴퓨팅 패러다임의 한계를 극복하고자 등장 MapReduce Disk로부터 데이터를 읽은 후 Map을 통해 흩어져 있는 데이터를 Key-Value 형태로 연관성 있는 데이터끼리 묶은 후에, Reduce를 하여 중복된 데이터를 제거하고, 원하는 데이터로 가공하여 다시 Disk에 저장 하지만 파일 기반의 Disk I/O는 성능이 좋지 못했고, In-memory의 연산을 통해 처리 성능 향상을 위해 Spark가 등장하였음. Apache Spark는 오픈소스이며, 범용적인 목적을 지닌 분산 클러스터 컴퓨팅 프레임워크 Fault Tolerance & Data Parallelism을 가지고 클러스터들을 프로그래밍 RDD, Data Frame, Set..
Hive Tables 이해하기 hive에서 names 테이블 생성 create table names (id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; 터미널 쉘에서 names.txt 파일 생성 0 Rich 1 Barry 2 George 3 Ulf 4 Danielle 5 Tom 6 manish 7 Brian 8 Mark hadoop fs -put names.txt /warehouse/tablespace/managed/hive/names/ 로 저장 기존에는 비어있던 names 테이블이 (왜인지 모르게 데이터가 깨지긴 하지만) names.txt에 넣은 값이(개수가 같긴 하니까..) 들어감을 볼 수 있음..
Hive란? Hive는 하둡에서 데이터를 처리하기 위한 데이터 웨어하우징 솔루션 중 하나입니다. Hive는 SQL을 사용하여 대규모 데이터 집합을 분석할 수 있도록 해주는 데이터 웨어하우스 솔루션입니다. Hive는 하둡 기반의 분산 데이터 저장소에서 SQL 쿼리를 실행할 수 있도록 해주는 인터페이스를 제공합니다. Hive는 HiveQL이라는 SQL과 비슷한 언어를 사용하여 데이터에 대한 쿼리 및 분석을 수행합니다. HiveQL은 기존의 SQL과 유사하며, 사용자는 대부분의 경우 HiveQL을 배우기 쉽습니다. 또한 HiveQL은 사용자가 쉽게 커스텀 함수와 집계 함수를 정의하고 사용할 수 있도록 해줍니다. Hive는 맵리듀스와 같은 하둡의 다른 기술과 함께 사용될 수 있으며, 대규모 데이터 처리 및 분석..
Endswitch Endswitch는 두 개의 파라미터를 이용하여 첫 번째에 입력한 문자열이 두 번째에 입력한 문자열로 끝이 나는지 확인할 수 있는 기능 앞 예제의 A 릴레이션의 데이터 중 name 속성의 값이 n으로 끝나는 속성이 있는지 검사하고, id 속성과 name 속성을 X 릴레이션에 저장 후 출력 X = FOREACH A GENERATE (id, name), ENDSWITH(name, 'n'); DUMP X; Startswitch : Endswitch와 동일함 Substring 주어진 문자열에서 지정한 인덱스만큼 문자열을 추출할 수 있는 기능 앞선 A 릴레이션에 SUBSTRING을 추가하여 name 속성값의 0번째 부터 (2-1) 번째 인덱스까지 추출하여 저장 후 출력 stopindex는 마지막..
Max 해당 속성의 최댓값을 찾을 수 있음 sample_data 수정 후 저장 A 릴레이션에 값 저장 B 릴레이션에 A 릴레이션 그룹화 X 릴레이션에 FOREACH ~ GENERATE 구문을 통해 A 릴레이션의 이름 중 최댓값을 가진 tail 속성의 데이터를 저장 A = LOAD 'sample_data' AS (name:chararray, tall:int); B = GROUP A All; X = FOREACH B GENERATE A.name, MAX(A.tall); DUMP X; Min 도 Max 와 동일하게 동작한다. Size Size 함수는 데이터의 행의 지정한 속성의 데이터 길이를 반환 앞에서 실시한 A 릴레이션의 원본 데이터 중 첫 속성인 name의 값의 길이를 X 릴레이션에 저장 후 출력 X =..
Limit DUMP를 이용하여 출력할 때 출력되는 튜플의 계수를 제한 아래 예제는 최대 3개의 출력만을 가진다. X = LIMIT A 3; DUMP X; Order by 릴레이션의 튜플이 있을 때 하나의 속성을 기준으로 정렬할 수 있는 명령어로 오름차순(ASC), 내림차순(DESC)이 가능 sample_data 수정 후 저장 A에 데이터의 속성 이름과 데이터 형태 지정 후 저장 a3 속성을 내림차순 정렬 A = LOAD 'sample_data' AS (a1:int,a2:int,a3:int); X = ORDER A BY a3 DESC; DUMP X; Rank Rank는 릴레이션의 튜플이 있을 때 하나의 속성을 기준으로 순위를 지정하여 반환 sample_data 수정 및 HDFS에 저장 A 릴레이션에 데이터..
COGROUP COGROUP 은 GROUP과 같은 역할을 하지만, 차이점은 GROUP 하나의 릴레이션에 그룹화를 하지만, COGROUP은 두 개 이상의 릴레이션에 그룹화를 지정할 수 있다는 것이다. sample_data 수정 후 저장 sample_data2 수정 후 저장 A와 B 릴레이션에 데이터 속성 이름과 데이터 타입을 저장 X 릴레이션에 COGROUP BY 구문을 이용하여 A 릴레이션의 owner 속성과 B 릴레이션의 friend2 속성을 그룹화 후 출력 A = LOAD 'sample_data' AS (owner:chararray,pet:chararray); B = LOAD 'sample_data2' AS (friend1:chararray,friend2:chararray); X = COGROUP A..
형 변환(cast) 연산자 sample_data 수정 후 HDFS에 저장 A = LOAD 'sample_data' AS (f1:int, f2:int); B = GROUP A BY f1; DUMP B; B 릴레이션에 GROUP BY를 통해 f1 속성 값을 기준으로 Inner Bag 형태로 튜플이 생성된 것을 확인 데이터 형 변환 X 릴레이션의 첫 번째 속성은 B 릴레이션의 첫 번째 값인 group 두 번째 속성은 A 릴레이션에 COUNT 함수를 이용하여 int 형태의 데이터를 chararray 형태로 변환하여 Inner Bag 데이터의 개수를 total 속성명으로 변경하여 저장 후 확인 X = FOREACH B GENERATE group, (chararray)COUNT(A) AS total; DUMP X;..
PIG란 대용량 데이터를 다루기 위한 스크립트 언어이다. MapReduce는 분산처리를 가능하게 해주는 서비스이지만 한 번 처리를 위해서는 복잡한 java 로직이 필요하다. 이는 너무 어렵기 때문에 PIG와 HIVE라는 언어가 만들어졌다. PIG는 데이터 구조를 자세히 검토할 수 있는 여러 명령어를 제공하며, 입력데이터의 대표 부분 집합에 대해 표본실행이 가능하다는 장점이 있다.(오류 점검에 사용) 또한 확장가능성도 높다. 다만 소량의 데이터에는 MapReduce 과부하가 발생하기 떄문에 비효율적이다. Hortonworks HDP 3.0을 다운로드하여 설치해 줍니다. https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.0.0/release-notes/content/r..