# hive
Presto (3)
Optimizations Constant folding 상수 폴딩은 컴파일 타임에 상수 표현식을 평가함 런타임 시 불필요한 계산을 제거하여 성능을 향상 Column pruning 조건절에 해당하지 않는 컬럼을 쿼리 실행 시 제외 쿼리 실행에 필요한 데이터를 줄여 성능을 향상 Nested column pruning 
플레이데이터 부트캠프 데이터 엔지니어링 트랙 15주차 (9.11~.15)
이번 주차로 벌써 15주나 지났습니다. 이제 슬슬 취업 준비도 해야되고 학습의 난이도가 높아진 만큼 더 많은 노력과 복습이 중요하다고 생각되었습니다. 따라서, 이번주차에는 지난 주차에 이어서 Docker(도커) 와 AWS EC2 인스턴스 를 활용해 모델, 백엔드, 프론트 엔드 서버를 각각 만들어보는 활동과 함께 "데이터 엔지니어링" 분야에서 자주 활용되는 "Hadoop(하둡)" 과 "Hive(하이브)" 에 관한 학습이 진행되었습니다. 하둡과 하이브를 이용해 다른 활동은 못하고 도커를 이용해 localhost 에 환경을 구성하는 것으로 끝났지만, 기본적인 이론을 학습하면서 다음 주차 수업에 연장선으로 이어갈 수 있도록 각각에 대해 학습하였습니다. > # ✅ 이 주의 학습 활동 ✍ 지난주에 크롤링한 데이터에서 "줄거리" 컬럼 데이터를 Word2vec 을 이용해 벡터 값으로 DB 테이블에 저장하는 것을 실행했습니

Hadoop with AWS - 04(하이브까지)
4-1 하둡보안규칙 4-1-1 인바운드 규칙을 편집한다. 4-1-2 hosts 파일에 내 ip들을 추가해준다. 이과정은 각각의 모든 ip를 기억하기 힘들기 때문에 설정하는 것이다. >- 기존 사용하던 보안규칙에 모든 tcp 내 ip를 추가해준다. dns 서버보다 먼저 검색한다. C:\Windows\System32\drivers\etc >- 43.202.5.132 client 43.201.97.90 namenode 3.38.211.128 secondnode 43.201.254.2 datanode3
[Hive] msck repair table
msck repair table 명령어란? MSCK는 MetaStore Check의 약자입니다. 즉, 말그대로 msck repair table 명령어는 메타스토어를 체크하여 hive table이 바라보는 location에는 존재하지만, 메타스토어에는 없는 파티션을 수동 추가하는 명령어입니다. hive 2.0에서의 test 확인 결과, interal/external table 모두 동작합니다. 메타스토어에만 존재하고 location에는 존재하지 않는 파티션의 경우 삭제되지 않습니다. (당연히 데이터는 조회되지 않습니다.)
[Hive] Internal Table & External Table
Hive에는 internal table과 external table 두 가지 유형의 테이블이 있습니다. 파악한 바로는 table drop 시 관련 데이터가 같이 삭제되는지/삭제되지 않는지만 차이가 존재하는데, 혹시 다른 차이점을 아신다면 댓글로 남겨주세요~! Internal or Managed Table (내부 테이블) internal(managed) table은 말 그대로 관련 데이터를 내부에서 관리하는 테이블입니다. 테이블 생성 시 location이 hive.metastore.warehouse.dir 속성이 가리키는 directory가 됩니다. 기본적으로 /user/hive/warehouse/databasename.db/tablename/ location 속성을 통해 테이블의 위치를 변경해줄 수 있습니다. 테이블을 삭제하면 관련 데이터 및 메타스토어 데이터가 모두 삭제됩니다. External Table (외부 테이블) -
쿼리엔진 마이그레이션 후 데이터 정합성 비교하는 법
쿼리엔진 마이그레이션 후 데이터 정합성 비교 기존 우리 데이터 파이프라인은 Spark SQL을 통해 배치 작업을 수행하였다. 2023 연초 기존 자체 배포판 Hadoop에서 Cloudera의 배포판으로 넘어가면서 배치 작업들을 Impala로 전환하였다. Impala와 Spark 모두 Hadoop 환경에서 쓸 수 있는 쿼리 엔진이며 SQL에 기반하여 쿼리를 작성할 수 있지만 세세한 부분이 조금씩 달랐다. Spark에서 사용하던 힌트, 함수들이 Impala에서는 지원이 안 되거나 대체 되는 기능으로 바꾸어 주어야 했던 것들이 있다. 가장 큰 차이는 Spark에서 지원하던 암시적 데이터 타입 변환을 Impala가 지원하지 않는 것이었다. 원천 DB로부터 데이터를 받아와 시간을 제외하고 전부 String으로 저장하는 영역이 있는데 이후 타입을 원천과 맞춘 뒷단으로 넘어갈 때 기존에는 암시적으로 신경쓰지 않던 명시적 형변환을 해주기 위해 CAST 함수를 쿼리에 추가
For input string: "5000L"
Error datagrip으로 hive 0.13 version을 연결하였더니 위와 같은 에러가 발생했다. 해결방법 hive-site.xml 파일에서 다음과 같이 변경하였다. > value에 5000 뒤에 L을 지워준다. 참고 사이트 java.sql.SQLException: For input string: "5000L"
java.net.ConnectException: Connection refused: connect.
Error 서버에 hive 0.13 ver과 hadoop 2.7.0 ver을 설치 후 외부에서 datagrip으로 연결을 시도했으나 위와 같은 에러가 발생하였다. 해결 방법 우선 서버가 켜져있는지 확인하였다. 서버가 켜져 있지 않다면 다음 명령어를 실행한다. 서버에서 beeline으로 접속을 해본다. beeline 접속은 다음과 같다. IP로 접속을 해본다. localhost 대신 ip로 변경하여 접속해본다. 필자는 ip로 접속할 때 같은 에러가 발생하였다. 이럴 경우 hive의 hive-site.xml의 hive.server2.thrift.bind.host의 value를 다음과 같이 고친다. > /etc/hosts 파일에 내 ip가 hadoop-master로 mapping 되어 있어야 한다. > /etc/hosts 파일을 고치기 귀찮으면 hadoop-master 대신 ip를 넣으면
Unrecognized Hadoop major version number: 3.3.3
Error > hadoop 3.3.3 ver에 hive 0.13.1 버전을 설치하고 schematool -initSchema -dbType mysql 명령어를 실행 시켰더니 위와 같은 에러가 발생했다. 해결 hive version을 올리거나 hadoop version을 낮추는 방법이 있는데 0.13.1 version의 hive가 필요했기 때문에 hadoop version을 2.7.0 version으로 낮추었다. 참고자료 [Unrecognized Hadoop major version number ](https://stackoverflow.com/questions/75312153/unrecognized-hadoop-major-version-number)

hive 설치
mysql 설치 다음 명령어로 mysql repository를 설치해줍니다. > mysql 패키지를 손쉽게 설치, 업데이트 관리가 가능 mysql 8버전을 설치해준다. GPG key retrieval failed라는 오류가 뜨면 다음과 같이 해결한다. > 보안 절차를 생략하여 설치 하는 것 다시 mysql을 설치를 진행해준다. mysql이 정상적으로 설치되었는지 확인한다. mysql을 실행시켜준다. mysql 로그인을 위해 임시 password를 확인한다. 확인된 password로 로그인을 한다. 로그인이 되었으면 root 비밀번호를 바꿔준다. 변경 사항을 적용시킨다. > 재시작 없이 수정된 환경 설정 적용해준다. hive 계정을 만들어준다. > 새로운 데이터베이스 사용자 'hive'를 생성하고 어떤 호스트에서든 접속을 허용할 수 있도록 '%'로 설정해준다

[Trouble shooting] ParquetDecodingException (Hive 테이블 조회)
1. 문제 발단 정형 데이터 배치를 Sqoop 에서 Spark 으로 전환 후 전체 데이터를 조회 했을 때 아무 문제 없이 조회가 가능했다. 하지만 Spark으로 전환 시점 부터 데이터 조회 시 에러 로그를 보여주며 조회가 되지 않았다. 예를 들어 아래와 같이 전체 조회 시 문제가 없으나 아래 처럼 특정 파티션을 조회하면 에러가 발생한다. 그러나 Spark 에서 특정 파티션을 조회하면 정상적으로 조회가 가능하다. 2. 문제 로그 특정 파티션 조회 시 아래와 같은 에러가 발생한다. 3. 문제 원인 분석 1. 원천과 타겟 스키마 컬럼 순서가 맞지 않을 경우 상당히 일리가 있는 말이
org/apache/hive/service/cli/thrift/TCLIService$Iface.
에러 hive를 datagrip에서 연결하려고 했는데 다음과 같은 에러가 났다. > org/apache/hive/service/cli/thrift/TCLIService$Iface. hive-service.jar가 없어서 그랬던거고 hive-service를 추가해줬더니 다음과 같은 에러가 났다. > Driver class 'org.apache.thrift.protocol.TProtocol' not found. hive-exec.jar도 추가해줬더니 다음과 같은 에러가 났다. > Driver class 'org.apache.http.client.HttpClient' not found. httpclient를 추가했더니 다음과 같은 에러가 발생했다. > Driver class 'org.apache.http.HttpRequestInterceptor' not found. httpcore를 추가해줬더니 다음과 같은 에러가 발생했다. > Driver class 'or

[플레이데이터] 6월 21일 수업(Hadoop-Hive-Spark)
Hive 활용 자바 코딩으로 집계하는게 아니라 sql쿼리를 만들면 집계를 해주는 hive를 사용 Hive를 통해 따로 데이터베이스를 만들지도 않았는데 데이터를 집계가능하게 해줌 su hadoop 강사님이 올려주신 S3 data를 다운로드 wget https://mydatahive.s3.ap-northeast-2.amazonaws.com/tmdb.zip unzip 설치 sudo yum install unzip 디렉토리 생성하고 파일 압축 풀기 mkdir tmdb && unzip ./tmdb.zip -d ./tmdb 하둡 사용 hdfs dfs -mkdir /tmdb cd tmdb `hdfs dfs -pu

[데이터 플랫폼 운영 / 개발] - Hive 3 (구성)
1. 서론 안녕하세요. 데이터 엔지니어링 & 운영 업무를 하는 중 알게 된 지식이나 의문점들을 시리즈 형식으로 계속해서 작성해나가며 새로 알게 된 점이나 잘 못 알고 있었던 점을 더욱 기억에 남기기 위해 글을 꾸준히 작성 할려고 합니다. Hadoop의 경우 하둡 완벽 가이드 책을 많이 참고하여 운영을 하고 있습니다. 반드시 글을 읽어 주실 때 잘 못 말하고 있는 부분은 정정 요청 드립니다. 저의 지식에 큰 도움이 됩니다. :) 2. 읽기 스키마와 쓰기 스키마 데이터베이스에서는 스키마를 검증하는 시점에 따라 읽기 스키마와 쓰기 스키마로 구분 합니다. Hive 는 데이터를 로드하는 시점이 아닌 먼저 쿼리를 실행하는 시점에서 데이터 스키마를 검
[Hive] 사용해보기
Hive 예제 사용해보기 (영화 크롤링 파일) > Hive를 이용하여 영화 크롤링 파일 mapreduce 해보기 hadoop 유저 접속 제공해준 파일 tmdb.zip 파일 받기 clinet 에서 실행 unzip 설치 잘들어갔는지 확인 (namenode:50070에서 확인) putty에서 확인하는 방법 Hiv
[Hadoop] 하둡 WordCount(예제)
Hadoop에서 wordcount 하기 putty 접속 후 hdfs에 새로운 폴더 생성 hdfs에 데이터 넣기 Hadoop Cluster에서 텍스트 파일 검색하기 Hadoop MapReduce의 예제 중 하나인 grep 실행 하둡 클러스터에서 텍스트 파일을 검색 >/mydata 경로에 있는 텍스트 파일을 dfs[a-z.]+라는 문법 (dfs가 들어가는 거를 wordcount)을 통해서 작업할거고, 그 아웃풋을 /output2 에 담겠다. MapReduce 성공 결과 세부 내역 확인 노란색 url 경로를 들어가면 아래 그림과 같이 확인할 수 있다. 
Hadoop: Hive 설치하기
Apache Hive란? 기본 작동 원리 사용자가 하둡에 있는 파일에 대해 SQL 쿼리를 작성하면 이것을 자동으로 맵리듀스 작업으로 변경해서 HDFS 실행(SQL 쿼리를 하둡 작업 코드로 변환해주는) 🐝 Hive 설치하기 (client 접속 한 상태) Hive 설치 파일 다운받기 먼저 다음의 명령어를 수행하여 초기 디렉터리로 이동 그 상태에서 아래의 명령어로 하이브 설치 파일 다운받는다 받은 파일 압축 해제 ./hive 라는 경로로 옮겨주기 mariaDB 서버 설치해주기 네임노드로 변경 네임노드인 상태에서 아래 명령어로 설치 mariadb status 명령어 시행하여 설치 후 제대로 잘 작동(running) 되는지 확인 
[플레이데이터] 6월 19일 수업(Hadoop-Hive)
Hadoop local에서 IP 별칭 등록 ec2 -> 보안그룹 -> 인바운드 규칙 편집(=보안규칙, 이 보안규칙은 방화벽과 같은 역할) 모든 TCP -> 소스 유형은 내 IP(나와 같은 IP만 접속가능하게끔) 근데 이때 내 IP가 스타벅스 wifi처럼 공유 IP이면 해킹의 위험이 있음. 꼭 개인 IP로 할 것 ~ hadoop server 3개의 public IP를 복사해서 C:\\Windows\System32\drivers\etc 이름은 hosts인 파일에다가 붙여넣기 (탄력적 IP가 아니라 서버를 끄고 열때마다 IP가 바껴 바뀔때마다 수정해야한다는 단점이 있음) 
[데이터 플랫폼 운영 / 개발] - Hive 2 (Tez)
1. 서론 안녕하세요. 데이터 엔지니어링 & 운영 업무를 하는 중 알게 된 지식이나 의문점들을 시리즈 형식으로 계속해서 작성해나가며 새로 알게 된 점이나 잘 못 알고 있었던 점을 더욱 기억에 남기기 위해 글을 꾸준히 작성 할려고 합니다. Hadoop의 경우 하둡 완벽 가이드 책을 많이 참고하여 운영을 하고 있습니다. 반드시 글을 읽어 주실 때 잘 못 말하고 있는 부분은 정정 요청 드립니다. 저의 지식에 큰 도움이 됩니다. :) 2. Tez 란? <img src="https://velog.velcdn.com/images/och5351/post/7963b187-dc6a-4f5c-86b8-5285719af389/image.p
Tez 설치
CentOS 7 기준 TEZ 0.10.2 버전은 hadoop 2.7.0 이상 이여야 한다. 1. Tez 다운 2. 압축 해제 3. lib 교체 4. tez-site.xml 5. 환경변수 설정 6. hdfs tez.tar.gz 업로드 7. hive engine 교체