반응형

빅데이터 34

[Hadoop] HDFS 디렐토리별 용량 체크하는 방법

Hadoop HDFS에서 디렉토리별 사용량 체크를 하는 방법 HDFS를 사용하다보면 directory 별로 디스크 사용량 체크가 필요하다. 아래와 같이 Permission denied 에러가 발생할것이다. 그 이유는 ROOT의 사용량 조회를 일반 유저 아이디로는 조회가 불가능하기 때문이다. 루트를 포함해 디스크 용량을 확인하기 위해서는 모든 키를 갖고 있는 HDFS 유저로 조회를 하면 된다. du: Permission denied: user=icecream, access=READ_EXECUTE, inode="/user/hue/.Trash":hue:hue:drwx------ ``` sudo -u hdfs hdfs dfs -du -s | sort -r -k 1 -g | awk '{ suffix="KMGT";..

빅데이터/Hadoop 2019.03.24

[Hive] Shell Script에서 외부에서 하이브 테이블 가져오기

Shell Script에서 외부 하이브 테이블 가져오는 방법 외부에서 하이브 테이블 가져오기 (외부) 하이브 테이블 데이터 복사 (내부) 하이브 테이블 생성 (내부) 데이터 하이브 테이블로 로드(Load) 쉘(shell)에서 데이터를 덤프, 테이블 생성, 로드 까지 하는 방법 스크립트 스크립트에서 첫번째로 hadoop distcp를 이용해서 데이터를 덤프해 오자. cat을 이용해서 하이브 쿼리를 특정 디렉토리의 .hql을 생성 .hql의 파일을 hive -f를 통해서 실행 위 과정에서 Hive 쿼리를 직접 입력하지 않고, hql을 생성한 이유는 이후에 스크립트에서가 아닌 스크립트 내에 있는 여러 쿼리들 중에서 하나만 실행하고 싶을때 사용하면 좋다. 또한 cat을 이용하는 이유는 하이브 쿼리를 순수하게 그..

빅데이터/Hive 2019.03.24

[Spark] Pyspark NoneType, null, blank, empty string 필터링 하는 방법

Pyspark NoneType, Null, Blank, Empty String 필터링 하는 방법 pyspark에서 NoneType, NULL, Blank, Empty String 등 사용지 않는 값을 필털이 하는 방법에 대해서 설명을 한다. SQL로 진행하면 컬럼 하나 하나에 대해서 WHERE 절을 이용해서 필터링을 해야한다. 하지만 spark에서 Condition을 생성하고, 해당 Condition을 filter() 함수의 인자로 넘겨주면, 동일한 조건으로 모든 컬럼에 적용이 가능하다. 코드에서 살펴볼 내용 None, Null Empty String이 포함된 Row만 추출이 가능 None, Null, Empty String을 제외한 모든 Row만 추출도 가능 코드 설명 간단하게 각각 컬럼에 공통적으로 ..

빅데이터/Spark 2019.03.24

[Spark] Pyspark에서 NoneType Filtering 하는 방법

PySpark 에서 NoneType을 Filtering 하는 방법 (any, all, subset) pyspark에서 drop method는 NULL을 가진 행을 제거하는데 가장 간단한 함수다. 기본적으로 NULL 값을 가진 행을 모두 제거를 한다. 모든 컬럼이 NULL인 경우 제거를 하고, 하나의 컬럼이 NULL인 경우 제거를 하고 싶은 경우가 있을것이다. 이런 경우에 어떻게 다르게 진행하는지 "any", "all"을 통해 설명 위 작업을 SQL에서 진행한다면 WHERE 절에 해당 컬림이 NULL인지 체크하는 구문을 넣어야 한다. 만약 모든 컬럼에 대해서 해야 하면? 모든 컬럼을 명시해야하는 단점이 있다. (SELECT * FROM TABLE WHERE COL1 IS NOT NULL) drop 메소드에..

빅데이터/Spark 2019.03.24

하둡(Hadoop) 데이터 복사, 로컬 및 클러스터간

하둡(Hadoop)에서 데이터 복사하는 방법 HDFS에서 데이터를 복사하는 방법은 아주 다양하다. 효율적으로 데이터를 복사하는게 중요하다 데이터를 복사하는 다양한 방법 일단 데이터를 복사하는 방법은 다양하다 로컬 클러스터 아래 속성을 통해서 로컬에 있는 데이터를, 클러스터에 있는 데이터를 옮길 수 있다. copyToLocal put get 클러스터 클러스터 클러스터간에 데이터를 옮기기 위해서는 아래와 같이 하면 된다. 클러스터 -> 로컬 -> 클러스터 과연 이렇게 하는 사람이 있을까 싶지만, 이렇게 하는 사람을 내가 보았음 클러스터 -> 클러스터 로 데이터를 옮기는 방법은 한가지가 아니다. cp distcp 두 가지 방법의 차이를 알지 못한다면, 작업에 엄청난 문제가 생길 것이다. 만약 distcp를 이..

빅데이터/Hadoop 2017.12.10

하이브(Hive) 랜덤 샘플링(Random Sampling), Shuffling(셔플링)

하이브에서 랜덤 샘플링 하는 방법 (셔플링) 하이브에서 수백만 수천만의 행이 있다고 생각을 해보자, 효율적으로 고정된 숫자를 임의로 샘플링을 하고 싶다면, 어떻게 효율적으로 할 수 있을까? 샘플링(Sampling) sql select * from my_table limit 1000; 아래와 같이 샘플링을 하면, 고정된 1000개의 rows를 위에서 부터 순서대로 데이터를 가져올 수 있다. 하지만, 동일한 방법으로 1000개를 가져오는 쿼리를 수행하면 같은 데이터가 샘플링이 된다. order by sql select * from my_table order by rand() limit 1000; 그렇다면, 임의로 정렬을 한뒤에 샘플링을 하면 어떨까? 아래와 같이 샘플링을 하면, 임의로 데이터를 정렬을 한 뒤..

빅데이터/Hive 2017.12.10

하이브(Hive) 조인(Join) 성능 올리기

하이브(Hive) 테이블 join 성능 올리기, 최적화, 튜닝하는 방법 들어가며 하이브에서 테이블 조인의 성능을 올리기 위해서는 다양한 방법이 있지만, 크게 두가지 방법에 대해서 설명을 한다. 하이브에서 큰 두개의 테이블을 만약 그냥 조인을 한다면 쿼리를 날리고 다음 날 아침에 와도, 쿼리는 동작하고 있을 것이다. 두개의 테이블을 조인을 해보자 두개의 테이블을 조인을 하기 전에, 각 테이블의 성격을 알아야 한다. 한개의 테이블의 metadata의 성격이 있는 테이블, 즉 작은 테이블의 사이즈라면, 해당 테이블을 메모리에 올린 이후에, 조인을 하면 성능이 올라갈 것이고, 두 테이블이 너무 커서 메모리에 올리기 어렵다면, 조인할 키를 뭉탱이로 뭉쳐서 뭉탱이 끼리 조인을 하면 빠르게 할 수 있다. Map-Si..

빅데이터/Hive 2017.11.29

하이브(Hive) 테이블 생성

하이브(Hive) 테이블 생성 하이브 테이블이 만약 textfile로 되어 있다면, 테이블을 load하거나, hue에서 테이블을 로딩할때 에러가 발생하는 경우가 있다. malformed ORC 에러가 뜬다면, 하이브 테이블의 타입을 확인할 필요가 있다. 이럴 경우에는 아래와 같이 기존 textfile을 orc테이블의 형태로 생성한 뒤에 export/import를 하면 에러 없이 진행이 된다. 코드

빅데이터/Hive 2017.11.29
반응형