public class JavaSql03_local extends UDF {
public static void main(String[] args) {
//TODO 运行环境
SparkSession sparkSession = SparkSession.builder().appName("JavaSql03_local").master("local[*]").getOrCreate();
sparkSession.sparkContext().setLogLevel("WARN");
//TODO 加载数据
//从jdbc加载数据
//方法一
/*Dataset<Row> ds1 = sparkSession.read().format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/mydb")
.option("driver","com.mysql.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.option("dbtable", "person")
.load();
ds1.printSchema(); //输出字段类型
ds1.show();*/
//方法二
Properties properties = new Properties();
properties.put("user","root");
properties.put("password","123456");
Dataset<Row> ds2 = sparkSession.read()
.jdbc("jdbc:mysql://localhost:3306/mydb", "person", properties);
ds2.printSchema(); //输出字段类型
ds2.show();
//TODO 处理数据
//创建视图
//ds1.createOrReplaceTempView("tableName1");
ds2.createOrReplaceTempView("person");
//TODO 自定义UDF函数
// sparkSession.udf().register("udfName",(String value)=>{
// value.toUpperClass();
// })
//TODO ================SQL================================
String sql = "SELECT " +
" name," +
" (age + 1) as nianl" +
" FROM" +
" `person`";
sparkSession.sql(sql).show();
sparkSession.sql(sql).createOrReplaceTempView("table1");
int age = 12;
//传递参数
sparkSession.sql("select name,nianl from table1 where nianl = '"+age+"'").show();
//sparkSession.sql("select name,nianl from person where nianl = '${age}'").show();
/**
* +---+----+---+
* | id|NAME|age|
* +---+----+---+
* | 1| zs| 11|
* | 2| ls| 22|
* | 3| ww| 33|
* +---+----+---+
* */
//TODO ================DSL================================
System.out.println("=========DSL=========");
ds2.select(col("age").plus(1)).show();
// ds2.groupBy("name")
// .count()
// .orderBy(col("age").desc()) //使用col()需要引入包 import static org.apache.spark.sql.functions.col;
// //.write()
// //.mode(SaveMode.Overwrite)
// //.jdbc()
// .filter("") //过滤 相当于where
// .agg(avg("age"),max("age"))//分类聚合函数,常与groupby连用
// .show();
// ;
// //方法二
// ds1.write().format("jdbc")
// .option("url","jdbc:mysql//....")
// .option("user","root")
// .option("password","123")
// .option("dbtable","t_table")
// .mode(SaveMode.Append)
// .save();
//TODO 关闭
sparkSession.stop();
}
}
二、使用scala语言编写
scala是spark的主要编程语言,相较于java更简洁
上代码:
package spark.sql
import org.apache.spark.SparkContext
import org.apache.spark.sql.{DataFrame, DataFrameReader, Dataset, SaveMode, SparkSession}
import java.util.Properties
/**
* 操作外部数据源
* 支持多种文件格式、文件系统、数据库
* 读:sparkSession.read.格式(text、json、jdbc)
* 写:dataframe .write.格式(text、json、jdbc)
* */
object SparkSql04_DataSource {
def main(args: Array[String]): Unit = {
//TODO 0、运行环境
val sparkSession = SparkSession.builder().master("local[*]").getOrCreate()
val sc: SparkContext = sparkSession.sparkContext
sc.setLogLevel("WARN")
![img](https://img-blog.csdnimg.cn/img_convert/33831f3c50410309f3390fc2cf59dd91.png)
![img](https://img-blog.csdnimg.cn/img_convert/46146072f2a761336b972d2068f376f8.png)
![img](https://img-blog.csdnimg.cn/img_convert/f64d5cd3f98db56390ef0c84df078895.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**