Spark Thrift Server를 구축하고 클라이언트 도구와 함께 작동하는 단계 (간단)

제목에 대해 일본어 정보가별로 없었기 때문에 써 보았습니다.
알아두면, BI 툴과의 제휴가 퍼질까..라고 생각했습니다.

라고 말하면서, 모두 로컬 환경에서 완결하는 순서가 되어 있습니다.
HDFS는 사용하지 않습니다. 하지만 Spark 클러스터 환경의 경우에도 크게 절차는 변하지 않는다고 생각합니다.

제 동작 환경은 다음과 같습니다만, 낡아도 움직인다고 생각합니다.
  • Mac Mojave
  • jdk 1.8
  • spark 2.4.0
  • PostgreSQL 11.2

  • 사전 준비



    이미 준비되어 있다면 필요하지 않습니다.

    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)
  • beeline
  • spark-sql

  • 이하, 각각의 순서에 대해 기재하고 있습니다.

    데이터베이스의 클라이언트 도구에서 연결해보기



    이번에는 데이터베이스의 클라이언트 도구로 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

    좋은 웹페이지 즐겨찾기