- udf 用户自定义函数
object UDF_Demo_Scala {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf()
conf.setMaster("local")
conf.setAppName("test")
//不添加此列 会报错 报一个重复创建 SparkContext对象
conf.set("spark.driver.allowMultipleContexts","true");
val sc = new SparkContext(conf)
var spark: SparkSession = SparkSession.builder().config(conf).getOrCreate()
/*这里的 最后分区个数必须设置为一 否则下面执行sql语句的时候
只会进行区内排序 因为分区的个数决定着并行度 所以多个task同时运行
所以只能保证同一个task中的数据会进行排序*/
val makeRdd: RDD[String] = sc.makeRDD(Array("zhang","li","wang","zhao","tian"),1)
// 4.读取文件数据,先使用map切分数据,再使用map将数据转成Row类型
val mapRdd: RDD[Row] = makeRdd.map(f => {
RowFactory.create(f)
})
// 5.动态构建DataFrame中的元数据,一般来说这里的字段可以源于字符串,也可以源于外部数据库
val arr = Array(
StructField("name", StringType)
)
// 6.将list转为DataFrame中的元数据
val structType: StructType = Dat