mysql编程展示数据_编程实现利用 DataFrame 读写 MySQL 的数据

该博客展示了如何使用Spark DataFrame进行MySQL数据的读写操作。通过创建DataFrame,配置JDBC连接,将数据插入MySQL数据库,并计算age的最大值和总和。在运行过程中,解决了MySQL服务器拒绝远程连接的问题,通过授权法赋予了远程访问权限。
摘要由CSDN通过智能技术生成

这是林子雨spark实验5的第三问:配置Spark通过JDBC连接数据库MySQL,编程实现利用DataFrame插入下列数据到MySQL, 最后打印出 age 的最大值和 age 的总和

下面贴出代码(测试过ok)

1 importjava.util.Properties2 importorg.apache.spark.sql.types._3 importorg.apache.spark.sql.Row4 importorg.apache.spark.SparkConf5 importorg.apache.spark.SparkContext6 importorg.apache.spark.sql.SQLContext7 object TestMySQL {8 def main(args: Array[String]) {9 val conf = newSparkConf()10 conf.setMaster("local")11 .setAppName("TestMySQL") //设置运行方式为本地

12 val sc = newSparkContext(conf)13 var sqlContext = newSQLContext(sc)14 val employeeRDD = sqlContext.sparkContext.parallelize(Array("3 Mary F 26","4 Tom M 23")).map(_.split(" "))15 val schema = StructType(List(StructField("id", IntegerType, true),StructField("name", StringType, true),StructField("gender", StringType, true),StructField("age", IntegerType, true)))16 val rowRDD = employeeRDD.map(p => Row(p(0).toInt,p(1).trim, p(2).trim,p(3).toInt))17 val employeeDF =sqlContext.createDataFrame(rowRDD, schema)18 val prop = newProperties()19 prop.put("user", "root")20 prop.put("password", "1")21 prop.put("driver","com.mysql.jdbc.Driver")22 prop.put("url","jdbc:mysql://192.168.80.128:3306/sparktest")23 employeeDF.write.mode("append").jdbc("jdbc:mysql://192.168.80.128:3306/sparktest", "sparktest.employee", prop)24 val jdbcDF = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://192.168.80.128:3306/sparktest").option("driver","com.mysql.jdbc.Driver").option("dbtable","employee").option("user","root").option("password", "1").load()25 jdbcDF.agg("age" -> "max", "age" -> "sum")26 jdbcDF.show()27

28 }29 }

运行截图:

20200201230021495298.png

测试中遇到的问题:

1:mysql服务器拒绝远程连接

解决方法:

授权法

(1)例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

第一步:root用户登录;mysql>mysql -u root -p rootpassword;

第二步:赋予权限;mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;

第三步:mysql>FLUSH PRIVILEGES;

(2)如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘192.168.xxx.xxx‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

(3)如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

mysql>GRANT ALL PRIVILEGES ON dk.* TO ‘root‘@‘192.168.xxx.xxx‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值