spark

一.RDD

1.RDD简介:

Resilient Distributed Dataset—有弹性的分布式的数据集合;里面没有真正的数据,是一个抽象的、不可变得、被分区的集合,集合内的元素可以被并行的操作

2.RDD特点:
  • 有多个分区,分区数量决定任务并行数

  • 函数作用在分区的迭代器中,决定了计算逻辑

  • 众RDD之间存在依赖关系,可以根据依赖关系恢复失败的任务和划分stage

  • 如果要发生shuffle,要使用分区器,默认使用HashPartitioner

  • 最优位置,即将Executor调度到数据所在的节点上,要求Worker和DataNode部署在同一节点

3.RDD的创建:
a、通过并行集合创建RDD
  • parallelize():  
  • val rdd = sc.parallelize(Array(100, 300, 200, 600, 500, 900)) 

  • val rdd = sc.parallelize(List(1, 2, 3, 4, 5, 6, 7, 8))

  • makeRDD():
  • val rdd = sc.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8))

  • rdd.collect()

b、从外部存储创建RDD
  • val rdd = sc.textFile("file:///home/test.txt")
  • val lines = rdd.collect
  • lines.foreach(println)
  • for (line <- lines) println(line)
c.从HDFS中加载数据创建RDD 
  • val rdd = sc.textFile("hdfs://192.168.219.75:9000/park/test.txt")
  • val lines = rdd.collect
  • val sparkLines = rdd.filter(_.contains("spark")) 

二.DataFrame的创建用法及实例

1. 创建DataFrame:

val hyd= spark.createDataFrame(Seq(

(1, "zs"),

(2, "ls"),

(3, "ww")

)).toDF("id", "name")

2. 显示DataFrame的结构:
hyd.printSchema()

3.显示DataFrame的内容:

hyd.show()

4.读文件:

import spark.implicits._

val movies = spark.read.text("/spark/movies.dat")

5.selectExpr():对指定字段进行特殊处理

spark.udf.register("replace",(x:String) => {
        x match{
                case "M" => 0
                case "F" => 1
        }
})
val userSelectExpr = user.selectExpr(
        "userId","replace(gender) as sex","age")
userSelectExpr.show(3)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值