1. 程式人生 > >Spark SQL metaData配置到Mysql

Spark SQL metaData配置到Mysql

做了 art note load data creat local 加載 流行 metadata

構造以spark為核心的數據倉庫: 0.說明 在大數據領域,hive作為老牌的數據倉庫比較流行,spark可以考慮兼容hive。但是如果不想用hive做數據倉庫也無妨,大不了我們用spark建立最新的數據倉庫。 sparkSQL的發展歷程表明了,spark本身就可以做數據倉庫,而不需要hive。sparkSQL作為數據倉庫其元數據放到了Derby中,一般生產環境不會用Derby,而是使用 MySQL或者postgreSQL.本文就是要告訴讀者,如何將sparkSQL的元數據存放到mysql. 1.集群規劃情況 mysql chinac244<-->chinac242,這兩節點做了主主備份。
spark master chinac88<-->chinac82,這兩節點做了HA spark slave chinac88,chinac82,chinac27 2.配置文件(chinac27上修改,然後分發到集群) 解壓後將$HIVE_HOME/conf/hive-site.xml 復制到$SPARK_HOME/conf/hive-site.xml 編輯此文件
 vim  $SPARK_HOME/conf/hive-site.xml
修改如下內容
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://
chinac244:3306/sparkmetadata?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class
name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>chinac</value> <description>password to use against metastore database</description> </property>
3.修改時間屬性(沒做) 然後修改Hive-site.xml中所有的時間屬性,所有屬性的單位為s(秒),刪除s然後添加3個0,所有屬性的單位為ms的刪除ms,spark無法識別這些單位,而是把他們全當數字處理。 4.分發配置文件
    scp $SPARK_HOME/conf/hive-site.xml chinac82:$SPARK_HOME/conf/hive-site.xml
    scp $SPARK_HOME/conf/hive-site.xml chinac88:$SPARK_HOME/conf/hive-site.xml

5.重啟spark集群

 [root@chinac88 ~]#  ${SPARK_HOME}/sbin/stop-all.sh
 [root@chinac88 ~]#  nohup ${SPARK_HOME}/sbin/start-all.sh &
啟動效果如下 6.測試配置 A,查看MySQL中數據庫信息 B,執行sparkSQL命令
  [root@chinac27 conf]# spark-sql --master spark://chinac88:7077,chinac82:7077
  //1.創建數據表
  CREATE TABLE testspark(id INT,name STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY , LINES TERMINATED BY \n;
此語句將在mysql中生成sparkmetadata數據庫,數據表 此語句將在HDFS中生成相應的目錄 7.進一步測試 準備數據,效果如下 加載數據,語句如下
  LOAD DATA LOCAL INPATH /root/software/test OVERWRITE INTO TABLE testspark;
此語句將上傳文件到HDFS,查看數據,效果如下 查詢數據,能夠看到加載後的數據。
     SELECT * FROM testspark;
刪除表,同時會刪除MySQL中的表信息和HDFS中的數據
   DROP TABLE testspark;
8.至此,sparkSQL元數據被存放到了mysql中,我們再也不需要hive數據倉庫了。直接用spark做數據倉庫就可以了

Spark SQL metaData配置到Mysql