基本方法
.map(x=>(x(1),x(2)))
- 应用于RDD或Dataset,对集合中的每个元素(假设为数组或类似结构)应用函数,生成一个新的元组,包含原数组的第2个和第3个元素(索引从0开始)。
.select($"id", $"column1.*")
- 应用于DataFrame,选择名为"id"的列以及名为"column1"的结构体(或DataFrame)中的所有列。
.join(bbb,Seq("SId"),"inner")
- 应用于DataFrame,将当前DataFrame与名为"bbb"的DataFrame基于"SId"列进行内连接。
.toString或.toDouble
- 这些通常应用于单个值,将值转换为字符串或双精度浮点数。在DataFrame或RDD的上下文中,可能需要结合
.map或其他转换函数使用。.getAs("CId")
- 应用于Row对象,获取名为"CId"的列的值。
.split(",")
- 应用于字符串,按逗号分隔字符串,生成一个字符串数组。
.filter(!_.startsWith("sp_id"))
- 应用于RDD或Dataset中的字符串或可以调用
.startsWith方法的对象,过滤掉以"sp_id"开头的元素。注意这里可能是对.filter方法的简化表示,实际使用时需要指定完整的lambda函数。.map(arr => (arr(2), 1)).reduceByKey(_ + _)
- 应用于键值对RDD,将每个数组的第3个元素作为键,并将值设为1,然后使用
reduceByKey按键聚合值,对相同键的值求和。.replace("r","")
- 应用于字符串,将所有"r"字符替换为空字符串,即删除所有"r"字符。
.toDF("id","value")
- 将RDD或Dataset转换为DataFrame,并指定列名为"id"和"value"。
.printSchema()
- 应用于DataFrame,打印DataFrame的架构信息,包括列名和类型。
.getString(0)
- 应用于Row对象,获取索引为0的列的值,并假设它是字符串类型。
.groupBy("register_date")
- 应用于DataFrame,按"register_date"列的值对DataFrame进行分组。
.map(arr => (arr(2), 1)).reduceByKey(_ + _)
- 与第8点相同,但上下文可能不同,这里假设是对分组后的结果进行操作。
.map(x=>(x (2),1)).reduce((x,y)=>(x._1,x._4+y._4))
- 这是一个错误的示例,因为
x和y在reduce函数中通常不包含_4这样的索引(除非x和y是某种特定结构的元组,但这里显然不是)。通常,reduce函数会接收两个相同类型的参数,并返回它们的某种聚合结果。.collect
- 应用于RDD或Dataset,将分布式数据集合的所有元素收集到驱动程序节点上,作为一个数组返回。
.sortBy
- 应用于RDD或Dataset,对数据进行排序。通常需要一个排序的键或函数作为参数
import org.apache.spark.sql.SparkSession
object aaa {
def main(args: Array[String]): Unit = {
val spark=SparkSession.builder().appName("Student")
.master("local[*]").getOrCreate()
val Student = DataFrameToMysql.getDataFrameFromMysql(spark, "Student")
val spark2=SparkSession.builder().appName("SC")
.master("local[*]").getOrCreate()
import spark.implicits._
// SId ,CId ,score ;
val SC = DataFrameToMysql.getDataFrameFromMysql(spark2, "SC")
val aaa=SC.filter(x=>x.getAs("CId")=="01")
val bbb=SC.filter(x=>x.getAs("CId")=="02")
val ccc=aaa.join(bbb,Seq("SId"),"inner").toDF("SID","CID1","score1","CID2","score2")
.filter(x=>x.getAs("score1").toString.toDouble > x.getAs("score2").toString.toDouble).select("SID")
val ddd=ccc.join(Student,Seq("SId"),"inner").show()
spark.close()
spark2.close()
}
}
package com.ybg
import com.mysql.jdbc.Driver
import org.apache.spark.{SparkConf, SparkContext}
import java.sql.DriverManager
object Warn {
def main(args: Array[String]): Unit = {
// 创建SparkConf对象
val conf = new SparkConf().setMaster("local[*]").setAppName("warning")
// 创建SparkContext对象
val spark = SparkContext.getOrCreate(conf)
// 加载MySQL驱动
Class.forName("com.mysql.cj.jdbc.Driver")
// 获取数据库连接
val connection = DriverManager.getConnection("jdbc:mysql://192.168.152.131:3306/mymac?useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai", "root", "ok")
// 定义SQL语句
val sql = "select * from macthreshold where mactype=? and macpart=?"
// 读取本地文件
spark.textFile("d:/mac.txt")
// 对每一行进行处理
.map(line=>{
// 将每一行按逗号分隔
val infos = line.split(",");
// 创建PreparedStatement对象
val pstat = connection.prepareStatement(sql)
// 设置参数
pstat.setInt(1,Integer.parseInt(infos(2)))
pstat.setInt(2,Integer.parseInt(infos(3)))
// 执行查询
val rs = pstat.executeQuery()
// 判断查询结果
if(rs.next()){
// 获取温度和振动
val temp = rs.getInt("temperature")
val vib = rs.getInt("vibrate")
// 判断是否正常
if(temp<=Integer.parseInt(infos(4)) && vib<=Integer.parseInt(infos(5))){
// 正常
line+",当前正常"
}else{
// 异常
line+",当前该设备异常"
}
}
}).saveAsTextFile("E:/yuanbenkeji2/123456.txt")
// 停止SparkContext
spark.stop()
}
}
374

被折叠的 条评论
为什么被折叠?



