spark mysql_sparksql连接mysql

该博客演示了如何使用Spark SQL连接到MySQL数据库,并从MySQL中读取数据。通过创建SparkConf和JavaSparkContext,然后建立SQLContext,使用DataFrameReader进行数据加载。两种方法展示了如何将MySQL中的表数据加载为DataFrame,并执行JOIN操作和SQL查询来筛选数据。
摘要由CSDN通过智能技术生成

package sparkSQl;

import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.sql.DataFrameReader;

import org.apache.spark.sql.Dataset;

import org.apache.spark.sql.SQLContext;

import java.util.HashMap;

import java.util.Map;public classmysqlToDataFrame {public static voidmain(String[] args) {//首先新建一个sparkconf定义参数

SparkConf conf = new SparkConf().setMaster("local").setAppName("JDBCDataSource");//创建sparkContext,是通往spark集群的唯一通道

JavaSparkContext sc = newJavaSparkContext(conf);//新建一个sparksql

SQLContext sqlContext = newSQLContext(sc);//sparksql连接mysql

/** 方法1:分别将两张表中的数据加载为DataFrame

**/

/*Map options = new HashMap();

options.put("url","jdbc:mysql://localhost:3306/tset");

options.put("driver","com.mysql.jdbc.Driver");

options.put("user","root");

options.put("password","admin");

options.put("dbtable","information");

Dataset myinfromation = sqlContext.read().format("jdbc").options(options).load();

//如果需要多张表,则需要再put一遍

options.put("dbtable","score");

Dataset scores = sqlContext.read().format("jdbc").options(options).load();*/

//方法2:分别将mysql中两张表的数据加载为DataFrame

DataFrameReader reader = sqlContext.read().format("jdbc");

reader.option("url","jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT");

reader.option("driver","com.mysql.cj.jdbc.Driver");

reader.option("user","root");

reader.option("password","admin");

reader.option("dbtable","information");

Dataset myinformation=reader.load();

reader.option("dbtable","score");

Dataset scores=reader.load();//将两个DataFrame转换为javapairrdd,执行join操作

myinformation.registerTempTable("info");

scores.registerTempTable("score");//定义sql语句

String sql = "select info.name,age"

+"from info join score"

+"on(info.name=score.name)"

+"where score.score>90";

Dataset sql2=sqlContext.sql(sql);

sql2.show();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值