sparkSQL metaData配置到Mysql

本文介绍了如何将SparkSQL的元数据从默认的Derby存储改为MySQL,详细阐述了集群规划、配置文件修改、时间属性调整、配置文件分发、重启Spark集群以及测试验证的步骤,使得Spark可以直接作为数据仓库使用,不再依赖于Hive。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造以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做数据仓库就可以了     
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值