일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- EMR
- spring
- hive
- 자동
- Docker
- vue
- fastcampus
- 로그인
- 예제
- ec2
- Mac
- config
- Jenkins
- Kafka
- SpringBoot
- login
- Zeppelin
- java
- 레디스
- aws
- 설정
- redash
- Redis
- 머신러닝
- gradle
- Cluster
- 자바
- 간단
- 젠킨스
- 클러스터
- Today
- Total
목록BIG DATA (56)
코알못
hive 에서 json 데이터를 읽어 오는 부분에서 아래 에러 발생 하였다. Caused by: org.apache.hadoop.hive.serde2.SerDeException: Row is not a valid JSON Object - JSONException: Duplicate key "name" 확인 해보니 name 이라는 key 가 중복되는 json 데이터가 있으며 hive에서는 기본적으로 대소문자를 구분하지 않으니 중복 키로 인식하여 오류발생하였다. {"NAME":"corin","name":"corin"...} 이를 해결하기 위해 읽어 들이는테이블의 설정에 대소문자를 구분하도록 추가 하였다. ALTER TABLE tb_test SET TBLPROPERTIES("case.insensitive" =..
두개의 테이블을 조인 하는 쿼리가 있었으며 해당 쿼리 실행시 아래와 같은 오류 발생하였다. Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Async Initialization failed. abortRequested=false at org.apache.hadoop.hive.ql.exec.Operator.completeInitialization(Operator.java:466) at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:400) at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:573) at or..
hive orc 테이블 조회시 아래 오류가 발생하며 조회되지 않았다. Caused by: java.lang.RuntimeException: java.io.IOException: org.apache.orc.FileFormatException: Malformed ORC file s3://data-test/transform/database/tb_test/yyyy=2022/mm=7/dd=14/hh=18/000000_0. Invalid postscript length 0 at 확인해보니 해당 파일을 스노우볼로 이관 작업하면서 파일이 깨진것으로 보인다. 깨진 파일을 삭제한뒤 교체하니 정상적으로 읽어 지며 해당 오류 발생하지 않았다.
데이터를 AWS 에 이관하였으며 해당 데이터를 읽기 위해 기존 하둡의 테이블 스키마 정보를 보고 그대로 만들었다. 테이블 정보는 아래와 같이 보았으며 hive> show create table tb_test; CREATE EXTERNAL TABLE `tb_test`( `date` string) PARTITIONED BY ( `yyyy` int, `mm` int, `dd` int, `hh` int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop..
Load 가 정상적으로 되었으나 StatsTask 에러가 발생 Loading data to table db.table partition (yyyy=null, mm=null, dd=null) Loaded : 3778/3778 partitions. Time taken to load dynamic partitions: 542.002 seconds Time taken for adding to write entity : 0.24 seconds FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.StatsTask 어래 옵션을 추가하여 해결! set hive.stats.autogather=false;
EMR Glue Metastore 이용하고 있었으나 Ranger 플러그인 활성화한 EMR 사용시에는 AWS 에서 Glue 를 지원하지 않는다고 한다. 이미 Glue 에 많은 메타 정보가 담아둔 상태로 수동으로 직접 스키마를 옮기는것은 힘들다고 판단하였다. 찾아보던중 AWS 에서 제공하는 glue 마이그레이션 샘플 스크립트가 있었으며 AWS 에서 공식으로 지원하는 스크립트는 아니라고 하니 본인 구성에 맞게 수정하여 사용한다. 만약 적은 데이터가 있다면 직접 옮기는게 빠를 수 있으니 아래 명령어로 테이블 생성 스크립트를 가져와서 생성하면 되며 // glue 연동된 hive hive> show create table [테이블명] 아래 명령어로 파티션 정보도 확인 가능하다. // 생성된 파티션 보기 hive> ..
1. INSERT OVERWRITE 쿼리를 hive 에서 돌릴시 s3 에 쓰는 시간이 오래 소요됨 (처리 로그 확인) - 원인 : s3 rename 의 경우 지우고 삭제하는 개념이라 hdfs 보다 느리다고함 - 해결 : . hdfs 에 임시 파일 쓰도록 하는 옵션 추가 . thread 갯수 늘리는 옵션 추가 set hive.blobstore.optimizations.enabled=true; set fs.s3.threadpool.size=5000; set fs.s3.threadpool.maxSize=5000; set fs.s3.maxConnections=5000; set hive.emr.use.hdfs.as.scratch.dir=true; set hive.exec.input.listing.max.threa..
IDC 에 하둡을 구성하여 운영중에 있었으나 디스크 증설, 버전 관리 등 공수가 크고 관리에 어려움이 있어 클라우드 이전을 계획 하였다. 클라우드 이전을 위해서는 약 37TB의 데이터를 이관해야 했으나 현재 IDC에 구축한 하둡의 경우 외부로 나가는 네트워크 망이 1G 로 되어 있으며 해당 망에 부하가 생길시 서비스에 영향을 주는 상황이였다. hadoop(hdp 2.6) 에 distcp 에 mac map 수(-m), map 당 max bandwidth(-bandwidth) 조절 가능한 옵션이 존재하나 아래 테스트와 같이 해당 옵션이 적용 되지 않았다. (map 하나 투입, 56Mbps 사용하도록 설정 하였으나 200Mbps 를 사용하였다.) 서비스에 영향을 줄수 있는 작업이므로 다른 대안을 검색중 선택한..