在學(xué)習(xí)轉(zhuǎn)換之前先了解以下它們的基本概念
- RDD:彈性分布式數(shù)據(jù)集,是一個(gè)只讀分區(qū)集合
- DataFrame:以命名列方式組織的分布式數(shù)據(jù)集,概念上和關(guān)系型數(shù)據(jù)庫(kù)的一張表一樣
- DataSet:分布式數(shù)據(jù)集合, Python暫時(shí)不支持
了解了基本的概念之后,接下來(lái)我們通過(guò)代碼編寫三種數(shù)據(jù)集的形成
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轉(zhuǎn)成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轉(zhuǎn)成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形成與相互轉(zhuǎn)換
?
Spark學(xué)習(xí)目錄:
- Spark學(xué)習(xí)實(shí)例1(Python):?jiǎn)卧~統(tǒng)計(jì) Word Count
- Spark學(xué)習(xí)實(shí)例2(Python):加載數(shù)據(jù)源Load Data Source
- Spark學(xué)習(xí)實(shí)例3(Python):保存數(shù)據(jù)Save Data
- Spark學(xué)習(xí)實(shí)例4(Python):RDD轉(zhuǎn)換 Transformations
- Spark學(xué)習(xí)實(shí)例5(Python):RDD執(zhí)行 Actions
- Spark學(xué)習(xí)實(shí)例6(Python):共享變量Shared Variables
- Spark學(xué)習(xí)實(shí)例7(Python):RDD、DataFrame、DataSet相互轉(zhuǎn)換
- Spark學(xué)習(xí)實(shí)例8(Python):輸入源實(shí)時(shí)處理 Input Sources Streaming
- Spark學(xué)習(xí)實(shí)例9(Python):窗口操作 Window Operations
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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