創建多線程的兩種方式的區別,Spark 基礎 —— RDD(創建 RDD)的兩種方式

 2023-11-18 阅读 24 评论 0

摘要:彈性分布式數據集(Resilient Distributed Dataset),簡稱 RDD,RDD 是 Spark 所提供的最基本的數據抽象,代表分布在集群中多臺機器上的對象集合。Spark 有兩種方法可以創建 RDD: 用 SparkContext 基于外部數據源創建 RDD,外部

彈性分布式數據集(Resilient Distributed Dataset),簡稱 RDD,RDD 是 Spark 所提供的最基本的數據抽象,代表分布在集群中多臺機器上的對象集合。Spark 有兩種方法可以創建 RDD:

  • 用 SparkContext 基于外部數據源創建 RDD,外部數據源包括
    • HDFS 上的文件
    • 通過 JDBC 訪問的數據庫表
    • Spark shell 創建的本地對象集合
  • 在一個或多個已有 RDD 上執行轉換操作來創建 RDD,這寫轉換操作包括:
    • 記錄過濾
    • 對具有相同鍵值的記錄做匯總
    • 多個 RDD 關聯在一起
val rdd1 = sc.textFile("")
val rdd2 = sc.parallelize("")

1. 使用 SparkContext 的 textFile 方法得到 RDD 形式的數據引用:

scala> val rawData = sc.textFile("kddcup.data")
rawData: org.apache.spark.rdd.RDD[String]

2. 把數據從集群上獲取到客戶端

注意此時類型為RDD[String]rawData所引用的數據仍然在集群上存儲。RDD 有許多方法,我們可以用其成員方法從集群讀取數據到客戶端機器上的 Scala REPL 中。最為簡單的方法大概就是 first 了,該方法向客戶端返回 RDD 的第一個元素(RDD 是彈性分布式數據集嘛):

scala> rawData.first
res0: String

first 方法可以對數據集做常規檢查,但通常我們更想返回更多樣例數據供客戶端分析。

scala> rawData.count
res1: Long = 4898431

如果 count 方法獲悉 RDD 只包含少量記錄,可以用 collect 方法向客戶端返回一個包含所有 RDD 內容的數組(Array[String])。此外還可以使用 take 方法該方法在 first 和 collect 之間做了一些折衷,可以向客戶端返回一個包含指定數量記錄的數組(Array[String]),

scala> val head = rawData.take(10)
head: Array[String] = Array(...)
scala> head(0)
res2: String
scala> head.apply(0)
res3: String

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/176553.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息