fine grained transformation와 coarse grained transformation의 의미를 잘설명한 쿼라가 있어서 공유한다.



https://www.quora.com/What-is-the-difference-between-fine-grained-and-coarse-grained-transformation-in-context-of-Spark


If there is a dataset with a billion rows, A fine grained transaction is one applied on smaller set, may be a single row.

A coarse grained one is an operation applied on an entire dataset. 




코오스 그레인드 기법은 전체 데이터에 특정 오퍼레이션을 적용한 기법이며, time based 에서 자주 사용된다.


파인 그레인드 기법은 작은 집합에 적용되는 기법이며 한 엔티티당 기준으로 자주 사용된다.


'데이터 분석' 카테고리의 다른 글

apache zepplin 0.6.2 설치 - python, hive 연동  (0) 2016.10.22
Posted by '김용환'
,




apache zepplin은 ipython notebook(https://ipython.org/ipython-doc/3/notebook/)와 비슷한 툴이지만, 언어에 국한되지 않은 interactive 툴이다. 


hive와 python을 연동하기 위해 0.6.2를 설치한 내용을 공유한다. 



$ wget http://apache.tt.co.kr/zeppelin/zeppelin-0.6.2/zeppelin-0.6.2-bin-all.tgz

$ cp zeppelin-env.sh.template zeppelin-env.sh

$ cp zeppelin-site.xml.template zeppelin-site.xml


$ vi zeppelin-env.sh

// 포트를 따로 지정한다.

export ZEPPELIN_PORT=8888

 

 

$ vi zeppelin-site.xml

 

 <property>

  <name>zeppelin.server.port</name>

  <value>8888</value>

  <description>Server port.</description>

</property>

 


 

여기서 그냥 실행하면 anoymous만 뜨기 때문에 인증을 사용할 수 있도록 수정한다.

자세한 내용은 https://zeppelin.apache.org/docs/0.6.2/security/shiroauthentication.html#2-secure-the-websocket-channel 에 있다. 


$ vi conf/shiro.ini
#/api/version = anon
#/** = anon
/** = authc

shiro.ini 파일에 인증 정보가 있는데 수정한다.

admin = samuel
#admin = password1
#user1 = password2, role1, role2
#user2 = password3, role3
#user3 = password4, role2


$ ./bin/zeppelin-daemon.sh start
(재시작은 restart 커맨드를 사용한다)



웹에서 http://xxx:8888/과 같이 서버에 접근한다. 

create note 해서 하나 샘플로 만들고, python 되는지 확인해본다. 

%python
print "hello world"


apazhe zepplin에는 기본 interpreter가 제공된다. 



그런데, hive Interpreter는 0.6.0과 조금 바뀌었다. hive jdbc url 대신, apache pheonix driver로 교체되었다. 



문서는 쉽게 설명되어 있지만, hive 관련 의존성 라이브러리도 몽땅 가져와야 하기 때문에 일이 크다. 


$ cd interpreter/jdbc
$ cp ~/zeppelin-0.6.0-incubating-SNAPSHOT/interpreter/hive/hive* ~/zeppelin-0.6.2/interpreter/jdbc/



conf/interpreter.json 을 잘 살펴봐야 한다. 

hive 설정은 다음과 같다. 

"2C14JFBSH": {
      "id": "2C14JFBSH",
      "name": "jdbc",
      "group": "jdbc",
      "properties": {
        "phoenix.user": "phoenixuser",
        "hive.url": "jdbc:hive2://localhost:10000",
        "default.driver": "org.postgresql.Driver",
        "phoenix.driver": "org.apache.phoenix.jdbc.PhoenixDriver",
        "hive.user": "hive",
        "psql.password": "",
        "psql.user": "phoenixuser",
        "psql.url": "jdbc:postgresql://localhost:5432/",
        "default.user": "gpadmin",
        "phoenix.hbase.client.retries.number": "1",
        "phoenix.url": "jdbc:phoenix:localhost:2181:/hbase-unsecure",
        "tajo.url": "jdbc:tajo://localhost:26002/default",
        "tajo.driver": "org.apache.tajo.jdbc.TajoDriver",
        "psql.driver": "org.postgresql.Driver",
        "default.password": "",
        "zeppelin.jdbc.concurrent.use": "true",
        "hive.password": "",
        "hive.driver": "org.apache.hive.jdbc.HiveDriver",
        "common.max_count": "1000",
        "phoenix.password": "",
        "zeppelin.jdbc.concurrent.max_connection": "10",
        "default.url": "jdbc:postgresql://localhost:5432/"
      },
      
      
여기서 "hive.url": "jdbc:hive2://localhost:10000" 을 원하는 url로 바꾸고, 
hive.user와 hive.password도 변경하다.


그리고 재시작한다. 
        
$ ./bin/zeppelin-daemon.sh reload


웹에서 http://xxx:8888/과 같이 서버에 접근한다.

노트 하나를 만들어서 테스트해본다. use db스키마 이름 없이  full table을 써야 한다. 

%hive

select * from stat.profile where logdate = 20161016 order by count desc limit 5



Posted by '김용환'
,