spark函数基础

二元组置换(特殊)

val t=new t1[String,Int]("chen",26)//val t=("chen",26)

println(t._1,t._2)

val swap: (Int, String) = t.swap//置换,二元组特殊方法,其他没有

println(swap._1,swap._2)

println(swap._1)

部分函数

def  alarmMsg(title:String,content:String,height:Double):Unit={

println(title+"\t"+content+":"+height)

}

alarmMsg("警报","空气甲醛浓度",21.42d)--->警报    空气甲醛浓度为:21.42

val title="警报"

def alarmMsg2=alarmMsg(title,content:String,height:Double)

alarmMsg2("空气甲醛浓度为:",21.43d)---> 警报    空气甲醛浓度为:21.32

def alarmMsg3=alarmMsg(content,height:Double)

alarmMsg3(12.45d) ---> 警报    空气甲醛浓度为:21.32

偏函数

def funPartition2:PartialFunction[Int,String]={

case 1=>"优秀"

case 2=>"良好"

case 3=>"合格"

case _=>"不及格"

}

println(funPartition2(3))---->合格

println(funPartition2(4))---->不及格

val arr:Array[Int]=Array(1,3,4,3,2)

val strings:Array[String] = arr.collect(funPartition2)

遍历

println(strings.toList)

for(in<-strings){

println(in)

}

函数作为返回值

def funTest():(String,String)=>String={

        def funDemo(str:String,str1:String):String={

            str+"@@"+str1

}

funDemo

}

println(funTest()("hello","world"))

函数作为参数

def funTest1(f:(Int,Int)=>Int)):Int={

val a=100

val b=50

f(a,b)

}

val sum=(a:Int,b:Int)=>a+b

val ji=(a:Int,b:Int)=>a*b

println(sum(2,3))---->5

println(funTest(sum)))---->150

println(funTest(ji)))---->5000

递归函数

def  ji(num:Int):Int{

if(num==1) 1     

else num*ji(num-1)

}

### Spark 函数使用方法与示例 #### 1. 常见的 Spark SQL 函数 Spark 提供了一组丰富的内置函数用于数据处理,这些函数可以分为多个类别,如字符串处理、数值计算以及日期时间操作等[^1]。以下是几个常见的 Spark SQL 函数及其用法: - **`concat`**: 将两个或更多列连接成一个新的字符串。 ```python from pyspark.sql.functions import concat, col, lit df.select(concat(col("firstname"), lit(" "), col("lastname")).alias("fullname")) ``` - **`substring`**: 截取指定位置和长度的子串。 ```python from pyspark.sql.functions import substring df.select(substring(df['col'], 0, 5).alias('sub_col')) ``` - **`datediff`**: 计算两个日期之间的天数差。 ```python from pyspark.sql.functions import datediff df.select(datediff(col("end_date"), col("start_date")).alias("date_diff")) ``` 以上代码展示了如何通过 `pyspark.sql.functions` 调用内置函数并应用于 DataFrame 的列上。 --- #### 2. 创建 SparkSession 并运行基本查询 为了能够执行上述函数,首先需要创建一个 SparkSession 实例。这是进入 Spark SQL 功能的核心入口[^2]。下面是一段简单的代码示例展示如何初始化 SparkSession 和加载数据: ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("example") \ .getOrCreate() data = [("James", "Smith", "USA", "CA"), ("Michael", "Rose", "USA", "NY"), ("Robert", "Williams", "USA", "CA")] columns = ["firstname", "lastname", "country", "state"] df = spark.createDataFrame(data=data, schema=columns) df.show() ``` 此代码片段定义了一个包含姓名、国家和地区字段的数据集,并将其转换为 DataFrame 进行后续操作。 --- #### 3. 外部命令调用 (Pipe) 除了标准库中的功能外,还可以利用外部工具扩展 Spark 的能力。例如,在 Scala 中可以通过管道 (`pipe`) 方法将 RDD 数据传递给 shell 脚本进行进一步加工[^3]。如下所示的是一个简单例子: ```scala def pipeExample(sc: SparkContext): Unit = { val data = List("hi", "hello", "how", "are", "you") sc.makeRDD(data) .pipe("/bin/cat") // 替代 echo.sh 可能更通用一些 .collect() .foreach(println) } ``` 注意这里的路径应替换为你实际环境中可访问的脚本文件地址或者系统命令。 --- #### 总结 通过对 Spark 内置函数的学习以及实践案例的理解,开发者可以根据具体需求灵活运用各种 API 来完成复杂的大规模数据分析任务。无论是基础的字符串拼接还是高级的时间序列运算,都可以借助于官方文档找到对应的解决方案^。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s_schen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值