Spark操作Mysql和Hive

1.Mysql

JDBC

Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中。

从MySQL中加载数据(Spark Shell方式)

1.启动Spark Shell,必须指定mysql连接驱动jar包

/usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-shell \
--master spark://node1.itcast.cn:7077 \
--jars /usr/local/spark-1.5.2-bin-hadoop2.6/mysql-connector-java-5.1.35-bin.jar \
--driver-class-path /usr/local/spark-1.5.2-bin-hadoop2.6/mysql-connector-java-5.1.35-bin.jar

2.从mysql中加载数据

val jdbcDF = sqlContext.read.format("jdbc").options(Map("url" ->     "jdbc:mysql://localhost:3306/test", "driver" -> "com.mysql.jdbc.Driver", "dbtable" -> "person",     "user" -> "root", "password" -> "root")).load()

3.执行查询

jdbcDF.show()

Spark操作Mysql和Hive_第1张图片

注意

连接时有存在连接失败密码 yes(错误情况)
1. 先写:

    val sqlContext = new org.apache.spark.sql.SQLContext(sc)

2.把jdbc:mysql://localhost:3306 的ip换成了localhost


另有查询时报连接失败异常(错误),但数据能查询出来
service mysqld restart

重启mysql服务后正常


2. Hive

  1. 将hive的配合文件hive-site.xml添加到spark的conf中
  2. 可以把mysql的连接驱动从 hive/lib 中放到spark/lib
  3. 启动shell 指定驱动位置

    bin/spark-shell \
    –master spark://node1.itcast.cn:7077 \
    –executor-memory 1g \
    –total-executor-cores 2 \
    –driver-class-path /usr/local/apache-hive-0.13.1-bin/lib/mysql-connector-java-5.1.35-bin.jar

  4. 查询表信息 ,可另开hive shell查看是否一致
    Spark操作Mysql和Hive_第2张图片

5. 第二步集成

根据hive的配置参数hive.metastore.uris的情况,采用不同的集成方式  
1. hive.metastore.uris没有给定配置值,为空(默认情况)
SparkSQL通过hive配置的javax.jdo.option.XXX相关配置值直接连接metastore数据库获取hive表元数据

需将连接数据库的驱动添加到Spark应用的classpath中

2. hive.metastore.uris给定了具体的参数值
SparkSQL通过连接hive提供的metastore服务来获取hive表的元数据

直接启动hive的metastore服务即可完成SparkSQL和Hive的集成
    $ hive –service metastore &

  1. 使用hive-site.xml配置的方式
    Spark操作Mysql和Hive_第3张图片

  2. 启动hive service metastore服务
    Spark操作Mysql和Hive_第4张图片

你可能感兴趣的:(大数据)