Spark SQL 综合应用

软件环境: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)运行

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值