레이블이 하이브인 게시물을 표시합니다. 모든 게시물 표시
레이블이 하이브인 게시물을 표시합니다. 모든 게시물 표시

2016년 11월 9일 수요일

HIVE 질의 하기 on SPARK

SPARK 에서 HIVE 질의 하는 과정이다.

SPARK CONTEXT 포인트를 얻는다.
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName(‘HIVE SQL TEST01’)
sc = SparkContext(conf=conf)

HIVE CONTEXT 포인트를 얻는다.
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)

HIVE SQL 질의를 하고 결과를 가져온다.
result = sqlContext.sql("SELECT * FROM tb_test01”).collect()

PANDAS DATAFRAME 형태로 변환한다.
import pandas as pd
df = pd.DataFrame(result,columns=result[0].asDict().keys()) if len(result) > 0 else ‘nothing’

**
result 는 list 타입이고, spark 명세 row 포맷을 element 로 가진다.

뒷문은 언제나 잘 잠근다.
sc.stop()


참조

HIVE를 위한 콘솔 ( console ) CLI 사용 도구
사용자 ( end-user )에게 인터렉티브 ( interactive ) CLI 환경을 제공한다.

가. beeline
예제 :: beeline> !connect jdbc:hive2://<thrift server>:10000
SQL 문장이 바로 수행이 가능하다.

나. spark-sql
본문 방식으로 동작하며 CLI 를 제공한다.
hive metastore service를 이용하고, thrift server 와는 대화하지 않는다.

커버 사진

2016년 11월 7일 월요일

sqlite3 to hdfs with hive

sqlite3 에서 사용하던 이력 데이터의 용량이 너무 커져서 하둡 (hive)으로 옮기는 과정을 다룬다.
hive 저장 포맷에 대한 간략한 비교도 포함한다.

목차

  • sqlite3 to hdfs ( hadoop file system )
  • hdfs to hive
  • performance as hive format


sqlite3 에서 hdfs 로 파일 저장하기

sqlite3 -csv big.db “select * from big;” | hadoop fs -put - /user/me/big.csv

**
결과를 local 에 csv 로 저장 할 공간이 없어서, pipe 형식으로 하둡으로 바로 저장했다.
질의 결과를 표준 출력 ( stdout ) 으로 보낼 수 있다면 응용 될 수 있는 방법이다.

hdfs 에서 hive 로 로딩 하기

hortonworks 의 amberi 도구를 사용하면, Hive View 를 만들어서 Upload Table 메뉴를 이용한다.
미리보기 모드에서 파일 포멧, 테이블/컬럼 이름 등을 지정하면 심플하다.

sql 기반의 명령어는 다음과 같다.
테이블 스키마를 먼저 생성하고, csv 파일을 로딩한다.
CREATE TABLE big_text (Column01 int, Column02 string…) STORED AS TEXT;
LOAD DATA INPATH ‘/user/me/big.csv’ [OVERWRITE] INTO TABLE big_text;

다른 형태의 포맷으로 테이블을 만드는 과정이다.
CREATE TABLE big_orc STORED AS ORC AS SELECT * FROM big_text;

**
HIVE는 다양한 포맷을 지원한다.
sequence, text, orc, rc, parquet ..
성능 관점에서 보면 질의 형태에 따라 row 와 column 기반의 포맷에 주의한다.

특정 컬럼  filter에 있어서 text와 orc 포맷 테이블의 질의하기
>> column 기반의 orc에 이점이 있다.

hive> select count(*) from big_orc where sdate = '20160104';
Query ID = root_20161107130507_53898e98-2f58-4ca4-a4c9-ca03a527c8de
Total jobs = 1
Launching Job 1 out of 1


Status: Running (Executing on YARN cluster with App id application_1478242837204_0017)

--------------------------------------------------------------------------------
        VERTICES      STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
--------------------------------------------------------------------------------
Map 1 ..........   SUCCEEDED     20         20        0        0       0       0
Reducer 2 ......   SUCCEEDED      1          1        0        0       0       0
--------------------------------------------------------------------------------
VERTICES: 02/02  [==========================>>] 100%  ELAPSED TIME: 9.08 s  
--------------------------------------------------------------------------------
OK
673374
Time taken: 9.762 seconds, Fetched: 1 row(s)
hive> select count(*) from big_text where sdate = '20160104';
Query ID = root_20161107130524_c2dcdccb-63c1-4502-a305-6a681fa1ea9e
Total jobs = 1
Launching Job 1 out of 1


Status: Running (Executing on YARN cluster with App id application_1478242837204_0017)

--------------------------------------------------------------------------------
        VERTICES      STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
--------------------------------------------------------------------------------
Map 1 ..........   SUCCEEDED     20         20        0        0       0       0
Reducer 2 ......   SUCCEEDED      1          1        0        0       0       0
--------------------------------------------------------------------------------
VERTICES: 02/02  [==========================>>] 100%  ELAPSED TIME: 38.58 s  
--------------------------------------------------------------------------------
OK
673374
Time taken: 39.234 seconds, Fetched: 1 row(s)

참고


hive architecture figure - referred to apache hive homepage