728x90
반응형

ElasticSearch의 인덱스를 불러와서 Zeppelin에서 사용하려고 했다.

 

인덱스를 제목-날짜(yyyy.MM.dd) 형식으로 만들어서 날짜를 항상 오늘 날짜로 사용하고 싶었다.

 

이를 위해서 현재 시간 정보를 불러오는 함수가 필요했는데 다음과 같이 사용했다.

val ts = (current_timestamp()).expr.eval().toString.toLong
val dateValue = new java.sql.Timestamp(ts/1000).toLocalDateTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy.MM.dd"))

어제 정보도 불러오면 좋을 것 같아 다음과 같이 하여 쉽게 불러올 수 있었다.

val ts = (current_timestamp()).expr.eval().toString.toLong - 86400000L
val dateValue = new java.sql.Timestamp(ts/1000).toLocalDateTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy.MM.dd"))

특정 데이터를 기준으로 정렬을 하거나 조건으로 조회하려고 했는데 해당 데이터가 문자열이었다.

 

그래서 정렬을 제대로 하기 위해 형변환이 필요했는데 실수형으로 변환해야 했다.

 

withColumn과 cast로 쉽게 해당 열의 타입을 변환할 수 있었다.

import org.apache.spark.sql.types.FloatType

...
df.withColumn("etc", df("etc") cast FloatType).createOrReplaceTempView("temp")

 

참고 문헌

  1. https://stackoverflow.com/questions/55267527/spark-getting-current-date-in-string/55267586

  2. https://stackoverflow.com/questions/52590524/sparkstream-convert-string-to-float-in-sql-query

반응형
728x90
반응형

이번에 프로젝트를 수행하면서 일별로 데이터를 분석할 필요가 있었다.

 

처음엔 수동으로 작업을 했는데 자동으로 구동되면 좋을 것 같아서 찾아보니 역시나 기능이 있었다.

 

$ZEPPELIN_HOME/conf/zeppelin-site.xml 에서 주석으로 돼있는 내용을 풀고 다음과 같이 수정하면 된다.

 

(zeppelin.notebook.cron.folders 에도 값이 있어야 하는데 / 나 특정 디렉토리를 입력했을 때는 버튼이 나오지 않았다.)

<property>
<name>zeppelin.notebook.cron.enable</name>
<value>true</value>
<description>Notebook enable cron scheduler feature</description>
</property>
<property>
<name>zeppelin.notebook.cron.folders</name>
<value>*</value>
<description>Notebook cron folders</description>
</property>

 

이미 설정된 값은 None, 1m, 5m, 1h, 3h, 6h, 12h, 1d로 돼있다.

 

그외에 설정을 하려면 크론 설정은 Quatz에서 하는 것과 같이 하면 된다.

 

10분마다로 설정을 하려며 0 0/10 * * * ? 로 하면 된다.

 

참고 문헌

  1. https://zeppelin.apache.org/docs/0.8.0/usage/other_features/cron_scheduler.html

  2. https://stackoverflow.com/questions/58727773/cant-turn-on-cron-feature-in-apache-zeppelin

  3. https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html#examples

반응형
728x90
반응형

Zeppelin은 웹 기반으로 다양한 인터프리터를 이용해서 데이터 분석을 도와주는 도구이다.

 

설치를 위해서 다음과 같이 하면 된다.

$ sudo yum install -y java-1.8.0-openjdk.x86_64
$ wget http://mirror.apache-kr.org/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-all.tgz
$ tar xf zeppelin-0.8.2-bin-all.tgz && cd zeppelin-0.8.2-bin-all

다음과 같이 실행하면 Zeppelin이 구동된다.

$ bin/zeppelin-daemon.sh start

서버에 설치한 경우엔 직접 아이피로 접근해야 하는데 기본 설정으로는 접근할 수 없다.

 

Zeppelin 최신 버전(0.8.2)의 경우 기본 호스트가 0.0.0.0에서 127.0.0.1로 변경됐다.

Upgrading from Zeppelin 0.8.1 (and before) to 0.8.2 (and later)
From 0.8.2, Zeppelin server bind 127.0.0.1 by default instead of 0.0.0.0. Configure zeppelin.server.addr property or ZEPPELIN_ADDR env variable to change.

그래서 zeppelin-env.sh에서 ZEPPELIN_ADDR0.0.0.0으로 변경하고 재시작하면 웹에서 접근할 수 있다.

 

Spark와 연동하기 위해서 Zeppelin이 설치된 서버에 Spark를 설치한다.

 

원격 서버에 설치된 Spark 버전이 2.4.5라면 똑같은 버전을 설치해야 동작한다.

 

그리고 zeppelin-env.sh에 다음과 같이 설정한다.

export SPARK_HOME=~/spark

이제 마지막으로 웹페이지에서 InterpreterSpark를 찾아 설정을 추가한다.

masterspark://remote_addr:7077와 같이 입력하면 된다.

 

Notebook에서 테스트해보면 잘 동작하는 것을 확인할 수 있다.

 

참고 문헌

  1. https://zeppelin.apache.org/docs/0.8.2/setup/operation/upgrading.html#upgrading-from-zeppelin-07-to-08

  2. https://stackoverflow.com/questions/50173371/how-to-solve-java-io-invalidclassexception-local-class-incompatible-with-scala

반응형

'Log' 카테고리의 다른 글

[Log] Logstash 403 에러 해결  (0) 2020.03.19
[Log] Airflow 설치  (0) 2020.03.12
[Log] NoNodesAvailable 에러 해결  (0) 2020.02.27
[Log] Spark ElasticSearch Parquet  (0) 2020.01.25
[Log] Logstash Kafka 연동 에러 해결  (0) 2020.01.25

+ Recent posts