Spark Thrift Server를 구축하고 클라이언트 도구와 함께 작동하는 단계 (간단)
알아두면, BI 툴과의 제휴가 퍼질까..라고 생각했습니다.
라고 말하면서, 모두 로컬 환경에서 완결하는 순서가 되어 있습니다.
HDFS는 사용하지 않습니다. 하지만 Spark 클러스터 환경의 경우에도 크게 절차는 변하지 않는다고 생각합니다.
제 동작 환경은 다음과 같습니다만, 낡아도 움직인다고 생각합니다.
사전 준비
이미 준비되어 있다면 필요하지 않습니다.
Spark 2.4.0 다운로드
cd ~
# ダウンロード
curl -O http://ftp.kddilabs.jp/infosystems/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
# 解凍
tar xvfz spark-2.4.0-bin-hadoop2.7.tgz
# シンボリックリンクの作成
ln -s $HOME/spark-2.4.0-bin-hadoop2.7 $HOME/spark
환경 변수 설정
echo 'export SPARK_HOME=$HOME/spark' >> ~/.bash_profile
echo 'export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin' >> ~/.bash_profile
source ~/.bash_profile
PostgresQL 드라이버 다운로드
메타스토어의 데이터베이스에 이번 PostgreSQL을 사용하고 싶으므로, 드라이버를 다운로드해 둡니다.
curl -LO https://jdbc.postgresql.org/download/postgresql-42.2.5.jar
# ここは色々な方法がありますが、今回はめんどくさいためjars配下に直接コピーします。
cp postgresql-42.2.5.jar $SPARK_HOME/jars/
메타 스토어 설정
PostgreSQL에 메타 스토어 용 데이터베이스 만들기
메타 스토어에 대한 데이터베이스를 Postgres에 만듭니다.
데이터베이스 이름은 무엇이든 괜찮지만 이번에는
metastore_db
라는 이름으로 만듭니다.psql -d postgres
psql (11.2)
Type "help" for help.
postgres=# create database metastore_db
CREATE DATABASE
hive-site.xml 설정
$SPARK_HOME/conf/hive-site.xml
를 다음과 같이 만듭니다.value
의 부분은 읽어 주세요.$SPARK_HOME/conf/hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:postgresql://localhost:5432/metastore_db</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.postgresql.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>usename</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
</configuration>
spark-defaults.conf 설정
$SPARK_HOME/conf/spark-defaults.conf
에 다음 설정을 더하면,나중의
spark-sql
커멘드를 실행했을 때에 PostgreSQL에 접속할 수 있게 되므로, 넣어 둡니다.$SPARK_HOME/conf/spark-defaults.conf
spark.jars /path/to/me/postgresql-42.2.5.jar
spark.driver.extraClassPath /path/to/me/postgresql-42.2.5.jar
여기까지 준비가 끝났다고 생각하기 때문에,
다음은 실제로 ThriftServer를 시작하고 연결해 보겠습니다.
Spark Thrift Server(STS) 시작
이번에는 로컬 모드로 시작합니다.
내용적으로는, spark-submit를 하고 있는 것 같습니다.
start-thriftserver.sh --master local
이것으로 완료됩니다. STS의 프로세스가 10000번 포트에서 기동하고 있다고 생각합니다.
Spark Thrift Server (STS)에 연결해보십시오.
다음의 3가지 방법으로 접속 확인해 보았습니다.
이하, 각각의 순서에 대해 기재하고 있습니다.
데이터베이스의 클라이언트 도구에서 연결해보기
이번에는 데이터베이스의 클라이언트 도구로 DBeaver에서 연결해보기로 결정했습니다.
(TeamSQL을 이전부터 사용하고 있었습니다만, 지원이 끝나 버리고 있었으므로, DBeaver를 사용하고 있습니다.매우 편리하고 추천입니다.)
[DBeaver]
htps // d 베아ㅇr. 이오/
연결 절차는 화면 캡처를 참조하십시오.
연결 유형으로 "Apache Spark"를 선택합니다.
데이터베이스/스키마, 사용자 이름/비밀번호를 입력하지 않고 연결할 수 있습니다.
쿼리를 작성하고 실행해 봅니다.
쿼리를 실행할 수 있으면 목표 달성입니다.
beeline에서 연결해보기
포함된
beeline
에서도 연결할 수 있습니다.# 起動
beeline
Beeline version 1.2.1.spark2 by Apache Hive
# 接続
beeline> !connect jdbc:hive2://localhost:10000
Connecting to jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000:
Enter password for jdbc:hive2://localhost:10000:
...
Connected to: Spark SQL (version 2.4.0)
Driver: Hive JDBC (version 1.2.1.spark2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000>
0: jdbc:hive2://localhost:10000> create database test2;
0: jdbc:hive2://localhost:10000> create table test2.test(id int, name varchar(20));
0: jdbc:hive2://localhost:10000> insert into test2.test values (1, 'chocomint'), (2, 'kusoyaro');
0: jdbc:hive2://localhost:10000> select * from test2.test;
spark-sql에서 연결해보기
포함된
spark-sql
에서도 연결할 수 있습니다.# 起動
spark-sql
# spark-defaults.confに設定を追加していない場合は、以下のように起動します。
spark-sql --jars /path/to/me/postgresql-42.2.5.jar --driver-class-path /path/to/me/postgresql-42.2.5.jar
spark-sql> create database test3;
spark-sql> create table test3.test(id int, name varchar(20));
spark-sql> insert into test3.test values (1, 'chocomint'), (2, 'kusoyaro');
spark-sql> select * from test3.test;
spark-shell로 데이터를 만들어 STS와 연동
앱을 만들어도 좋았습니다만, spark-shell로 데이터를 만들어 STS에 제휴해 보겠습니다.
spark-shell --master local
Spark context available as 'sc' (master = local, app id = local-1552720348693).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.0
/_/
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_201)
Type in expressions to have them evaluated.
Type :help for more information.
:paste
모드로 전환하여 코드를 붙여넣습니다.붙여넣으면
Ctrl+D
에서 실행됩니다.scala> :paste
// Entering paste mode (ctrl-D to finish)
import org.apache.spark.sql.SaveMode
import spark.implicits._
case class Person(id: Int, name: String)
val people = Seq(Person(1, "Alice"), Person(2, "Bob"), Person(3, "Chocomint"))
val peopleDS = people.toDS
// データベースtest1にpeopleテーブルとして作成する
peopleDS.write.mode(SaveMode.Overwrite).saveAsTable("test1.people")
// Exiting paste mode, now interpreting.
쓰기가 완료되면 데이터베이스 test1에 people 테이블을 작성할 수 있어야 합니다.
요약
간단한 로컬 환경에서의 절차에 대해 설명했지만 클러스터 환경에서도 응용이 효과적이라고 생각합니다.
알아두면, Spark의 활용의 폭이 넓어지는 것이라고 생각했습니다.
참고) Configuring the Hive Metastore
htps //w w. c우우라. 코 m / 도쿠 멘 타치 온 / 엔테 rp 리세 / 5-6-x /와 피 cs / cdh_이 g_히ゔぇ_메타 s 토레 _ 콘후 쿠레. HTML
Reference
이 문제에 관하여(Spark Thrift Server를 구축하고 클라이언트 도구와 함께 작동하는 단계 (간단)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chocomintkusoyaro/items/980e7c3f9b892c3901d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)