在學習轉換之前先了解以下它們的基本概念
- RDD:彈性分布式數據集,是一個只讀分區集合
- DataFrame:以命名列方式組織的分布式數據集,概念上和關系型數據庫的一張表一樣
- DataSet:分布式數據集合, Python暫時不支持
了解了基本的概念之后,接下來我們通過代碼編寫三種數據集的形成
RDD的形成
from pyspark.sql import SparkSession
if __name__ == '__main__':
spark = SparkSession \
.builder \
.appName("rddData") \
.master("local[*]") \
.getOrCreate()
# 方式一:
data = [1, 2, 3, 4, 5]
rdd1 = spark.sparkContext.parallelize(data)
print(rdd1.collect())
# [1, 2, 3, 4, 5]
# 方式二:
rdd2 = spark.sparkContext.textFile("/home/llh/data/people.txt")
print(rdd2.collect())
# ['Jack 27', 'Rose 24', 'Andy 32']
spark.stop()
DataFrame的形成
from pyspark.sql import SparkSession
if __name__ == '__main__':
spark = SparkSession \
.builder \
.appName("rddDataFrame") \
.master("local[*]") \
.getOrCreate()
df = spark.read.text("/home/llh/data/people.txt")
df.show()
# +---+----+
# |age|name|
# +---+----+
# | 27|Jack|
# | 24|Rose|
# | 32|Andy|
# +---+----+
spark.stop()
RDD轉成DataFrame
from pyspark.sql import SparkSession
from pyspark.sql import Row
if __name__ == '__main__':
spark = SparkSession \
.builder \
.appName("rddRDD") \
.master("local[*]") \
.getOrCreate()
data = [1, 2, 3]
rdd1 = spark.sparkContext.parallelize(data)
print(rdd1.collect())
# [1, 2, 3]
# rdd -> dataframe
rdd2 = rdd1.map(lambda x: Row(x))
df = spark.createDataFrame(rdd2, schema=['num'])
df.show()
# +---+
# |num|
# +---+
# | 1 |
# | 2 |
# | 3 |
# +---+
spark.stop()
DataFrame轉成RDD
from pyspark.sql import SparkSession
if __name__ == '__main__':
spark = SparkSession \
.builder \
.appName("rddDataFrame") \
.master("local[*]") \
.getOrCreate()
df = spark.read.text("/home/llh/data/people.txt")
rdd = df.rdd
print(rdd.collect())
# [Row(value='Jack 27'), Row(value='Rose 24'), Row(value='Andy 32')]
spark.stop()
以上就是RDD與DataFrame形成與相互轉換
?
Spark學習目錄:
- Spark學習實例1(Python):單詞統計 Word Count
- Spark學習實例2(Python):加載數據源Load Data Source
- Spark學習實例3(Python):保存數據Save Data
- Spark學習實例4(Python):RDD轉換 Transformations
- Spark學習實例5(Python):RDD執行 Actions
- Spark學習實例6(Python):共享變量Shared Variables
- Spark學習實例7(Python):RDD、DataFrame、DataSet相互轉換
- Spark學習實例8(Python):輸入源實時處理 Input Sources Streaming
- Spark學習實例9(Python):窗口操作 Window Operations
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
