SparkSql从MySQL加载数据
Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中。
1、通过IDEA编写SparkSql代码
mysql建表iplocation语句
create table `iplocation` (
`longitude` varchar (20),
`latitude` varchar (20),
`total_count` bigint (20)
);
package cn.cheng.sql
import java.util.Properties
import org.apache.spark.sql.{DataFrame, SparkSession}
/**
* todo:Sparksql从mysql中加载数据
*/
object DataFromMysql {
def main(args: Array[String]): Unit = {
//todo:1、创建sparkSession对象
val spark: SparkSession = SparkSession.builder()
.appName("DataFromMysql")
.master("local[2]")
.getOrCreate()
//todo:2、创建Properties对象,设置连接mysql的用户名和密码
val properties: Properties =new Properties()
properties.setProperty("user","root")
properties.setProperty("password","123456")
//todo:3、读取mysql中的数据
val mysqlDF: DataFrame = spark.read.jdbc("jdbc:mysql://192.168.200.150:3306/spark","iplocaltion",properties)
//todo:4、显示mysql中表的数据
mysqlDF.show()
spark.stop()
}
}
执行结果
2、通过spark-shell运行
- 启动spark-shell(必须指定mysql的连接驱动包)
spark-shell \
--master spark://node-1:7077 \
--executor-memory 1g \
--total-executor-cores 2 \
--jars /opt/bigdata/hive/lib/mysql-connector-java-5.1.35.jar \
--driver-class-path /opt/bigdata/hive/lib/mysql-connector-java-5.1.35.jar
- 从mysql中加载数据
val mysqlDF = spark.read.format("jdbc").options(Map("url" -> "jdbc:mysql://192.168.200.100:3306/spark", "driver" -> "com.mysql.jdbc.Driver", "dbtable" -> "iplocaltion", "user" -> "root", "password" -> "123456")).load()
- 执行结果
喜欢就点赞评论+关注吧
感谢阅读,希望能帮助到大家,谢谢大家的支持!