zoukankan      html  css  js  c++  java
  • Spark SQL metaData配置到Mysql

    构造以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 '
    ';
       此语句将在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做数据仓库就可以了     
  • 相关阅读:
    【磁盘/文件系统】第五篇:CentOS7.x__btrfs文件系统详解
    【python】-- IO多路复用(select、poll、epoll)介绍及实现
    【python】-- 事件驱动介绍、阻塞IO, 非阻塞IO, 同步IO,异步IO介绍
    【python】-- 协程介绍及基本示例、协程遇到IO操作自动切换、协程(gevent)并发爬网页
    【python】-- 多进程的基本语法 、进程间数据交互与共享、进程锁和进程池的使用
    【python】-- 队列(Queue)、生产者消费者模型
    【python】-- 信号量(Semaphore)、event(红绿灯例子)
    【python】-- GIL锁、线程锁(互斥锁)、递归锁(RLock)
    【python】-- 继承式多线程、守护线程
    【python】-- 进程与线程
  • 原文地址:https://www.cnblogs.com/itboys/p/9215594.html
Copyright © 2011-2022 走看看