Spark连接各种数据源
一、Spark连接mysql
import java.util.Properties
import org.apache.spark.sql.SparkSession
object ConnectMysql {
/**
* spark操作mysql
* 1、首先将拷贝mysql-connector-java.5.1.38.jar驱动文件到spark的jars目录下
*
*/
def main(args: Array[String]): Unit = {
//创建SparkSession
val spark = SparkSession.builder()
.master("local[4]") //设置master
.appName(this.getClass.getName) // 设置appname
.getOrCreate()
// 设置要访问的mysql的url
val url = "jdbc:mysql://single:3306/kb10"
// 设置要访问的mysql的表名
val tableName = "stusub"
// 设置要访问的mysql的用户名, 密码, 数据库驱动类Driver
val props = new Properties()
props.setProperty("user", "root")
props.setProperty("password", "root")
props.setProperty("driver", "com.mysql.jdbc.Driver")
// 通过spark.read.jdbc方法读取mysql中数据
val df = spark.read.jdbc(url, tableName, props)
df.printSchema() //打印schema信息
df.show()
// 将DataFrame数据写入到MySQL中, 追加方式
df.write.mode("append").jdbc(url,tableName,props)
}
}
二、Spark连接Hive
import org.apache.spark.sql.SparkSession
object ConnectHive {
/**
* 使用sparksql操作hive
* SparkSQL与Hive集成
* 拷贝hive配置文件内的hive-site.xml至spark的conf 文件夹下
* 同时将hive-site.xml放到idea文件的资源目录下
* 在idea中的hive-site.xml中添加配置:(hive元数据的地址,)9083为默认端口号
* <property>
* <name>hive.metastore.uris</name>
* <value>thrift://single:9083</value>
* </property>
* 这样就可以使用sparksql访问操作hive中的元数据
*/
def main(args: Array[String]): Unit = {
创建SparkSession
val spark = SparkSession.builder()
.master("local[4]") //设置master
.appName(this.getClass.getName) //设置appname
.enableHiveSupport() //添加属性,允许sparksql操作hive
.getOrCreate()
// 读取Hive中数据表
val df = spark.sql("select * from shoptest")
df.show()
}
}