软件环境:Hadoop2.7分布式集群环境
开发环境与工具:(1)Windows 10 (2)IntelliJ IDEA
192.168.213.70---master
192.168.213.71---slave1
192.168.213.72---slave2
一、通过创建学生数据RDD,设置schema模式信息,然后创建DataFrame对象,最终建dataframe信息存储到MySQL数据库中。
1、编写文件
package com.qst.sql import java.util.Properties import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType} import org.apache.spark.sql.{Row, SaveMode, SparkSession} object SparkSQLJDBC2 { def main(args: Array[String]): Unit = { // 1. 创建SparkSession val spark = SparkSession.builder().appName(this.getClass.getName).master("local[*]").getOrCreate() val sc = spark.sparkContext sc.setLogLevel("WARN") /***********手动创建数据,并写入到数据库 ********************************/ //下面我们设置两条数据表示两个学生信息 val studentRDD = spark.sparkContext.parallelize(Array("1 Tom 22 M", "2 Jack 20 M")).map(_.split(" ")) //下面要设置模式信息 val schema = StructType(List( StructField("id", IntegerType, true), StructField("name", StringType, true), StructField("age", IntegerType, true), StructField("gender", StringType, true) )) //下面创建Row对象,每个Row对象都是rowRDD中的一行 val rowRDD = studentRDD.map(p => Row(p(0).toInt, p(1).trim, p(2).toInt, p(3).trim)) //建立起Row对象和模式之间的对应关系,也就是把数据和模式对应起来 val studentDF = spark.createDataFrame(rowRDD, schema) studentDF.show() //下面创建一个prop变量用来保存JDBC连接参数 val prop = new Properties() prop.put("user", "root") // 用户名是root prop.put("password", "123456") // 数据库密码是空 prop.put("driver", "com.mysql.jdbc.Driver") //表示驱动程序是com.mysql.jdbc.Driver //下面就可以连接数据库,采用append模式,表示追加记录到数据库spark的student表中 studentDF.write.mode("append").jdbc("jdbc:mysql://192.168.213.70:3306/spark", "spark.student_temp2", prop) spark.stop() } }
2、运行
3、信息存储到MySQL数据库中
二、spark中使用外置hive
(1)准备工作
(2)启动 spark-shell
三、在代码中访问 Hive
(1)拷贝 hive-site .xml 到 resources 录下
(2)添加依赖
(3)测试代码
(4)运行