亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > pyspark創建DataFrame的幾種方法

pyspark創建DataFrame的幾種方法

熱門標簽:唐山智能外呼系統一般多少錢 哈爾濱ai外呼系統定制 海南400電話如何申請 激戰2地圖標注 白銀外呼系統 騰訊外呼線路 公司電話機器人 陜西金融外呼系統 廣告地圖標注app

pyspark創建DataFrame

為了便于操作,使用pyspark時我們通常將數據轉為DataFrame的形式來完成清洗和分析動作。

RDD和DataFrame

在上一篇pyspark基本操作有提到RDD也是spark中的操作的分布式數據對象。

這里簡單看一下RDD和DataFrame的類型。

print(type(rdd))  # class 'pyspark.rdd.RDD'>
print(type(df))   # class 'pyspark.sql.dataframe.DataFrame'>

翻閱了一下源碼的定義,可以看到他們之間并沒有繼承關系。

class RDD(object):

    """
    A Resilient Distributed Dataset (RDD), the basic abstraction in Spark.
    Represents an immutable, partitioned collection of elements that can be
    operated on in parallel.
    """

class DataFrame(object):
    """A distributed collection of data grouped into named columns.

    A :class:`DataFrame` is equivalent to a relational table in Spark SQL,
    and can be created using various functions in :class:`SparkSession`::
 ...
    """

RDD是一種彈性分布式數據集,Spark中的基本抽象。表示一種不可變的、分區儲存的集合,可以進行并行操作。
DataFrame是一種以列對數據進行分組表達的分布式集合, DataFrame等同于Spark SQL中的關系表。相同點是,他們都是為了支持分布式計算而設計。

但是RDD只是元素的集合,但是DataFrame以列進行分組,類似于MySQL的表或pandas中的DataFrame。

實際工作中,我們用的更多的還是DataFrame。

使用二元組創建DataFrame

嘗試第一種情形發現,僅僅傳入二元組,結果是沒有列名稱的。
于是我們嘗試第二種,同時傳入二元組和列名稱。

a = [('Alice', 1)]
output = spark.createDataFrame(a).collect()
print(output)
# [Row(_1='Alice', _2=1)]

output = spark.createDataFrame(a, ['name', 'age']).collect()
print(output)
# [Row(name='Alice', age=1)]

這里collect()是按行展示數據表,也可以使用show()對數據表進行展示。

spark.createDataFrame(a).show()
# +-----+---+
# |   _1| _2|
# +-----+---+
# |Alice|  1|
# +-----+---+

spark.createDataFrame(a, ['name', 'age']).show()
# +-----+---+
# | name|age|
# +-----+---+
# |Alice|  1|
# +-----+---+

使用鍵值對創建DataFrame

d = [{'name': 'Alice', 'age': 1}]
output = spark.createDataFrame(d).collect()
print(output)

# [Row(age=1, name='Alice')]

使用rdd創建DataFrame

a = [('Alice', 1)]
rdd = sc.parallelize(a)
output = spark.createDataFrame(rdd).collect()
print(output)
output = spark.createDataFrame(rdd, ["name", "age"]).collect()
print(output)

# [Row(_1='Alice', _2=1)]
# [Row(name='Alice', age=1)]

基于rdd和ROW創建DataFrame

from pyspark.sql import Row


a = [('Alice', 1)]
rdd = sc.parallelize(a)
Person = Row("name", "age")
person = rdd.map(lambda r: Person(*r))
output = spark.createDataFrame(person).collect()
print(output)

# [Row(name='Alice', age=1)]

基于rdd和StructType創建DataFrame

from pyspark.sql.types import *

a = [('Alice', 1)]
rdd = sc.parallelize(a)
schema = StructType(
    [
        StructField("name", StringType(), True),
        StructField("age", IntegerType(), True)
    ]
)
output = spark.createDataFrame(rdd, schema).collect()
print(output)

# [Row(name='Alice', age=1)]

基于pandas DataFrame創建pyspark DataFrame

df.toPandas()可以把pyspark DataFrame轉換為pandas DataFrame。

df = spark.createDataFrame(rdd, ['name', 'age'])
print(df)  # DataFrame[name: string, age: bigint]

print(type(df.toPandas()))  # class 'pandas.core.frame.DataFrame'>

# 傳入pandas DataFrame
output = spark.createDataFrame(df.toPandas()).collect()
print(output)

# [Row(name='Alice', age=1)]

創建有序的DataFrame

output = spark.range(1, 7, 2).collect()
print(output)
# [Row(id=1), Row(id=3), Row(id=5)]

output = spark.range(3).collect()
print(output)
# [Row(id=0), Row(id=1), Row(id=2)]

通過臨時表得到DataFrame

spark.registerDataFrameAsTable(df, "table1")
df2 = spark.table("table1")
b = df.collect() == df2.collect()
print(b)
# True

配置DataFrame和臨時表

創建DataFrame時指定列類型

在createDataFrame中可以指定列類型,只保留滿足數據類型的列,如果沒有滿足的列,會拋出錯誤。

a = [('Alice', 1)]
rdd = sc.parallelize(a)

# 指定類型于預期數據對應時,正常創建
output = spark.createDataFrame(rdd, "a: string, b: int").collect()
print(output)  # [Row(a='Alice', b=1)]
rdd = rdd.map(lambda row: row[1])
print(rdd)  # PythonRDD[7] at RDD at PythonRDD.scala:53

# 只有int類型對應上,過濾掉其他列。
output = spark.createDataFrame(rdd, "int").collect()
print(output)   # [Row(value=1)]

# 沒有列能對應上,會拋出錯誤。
output = spark.createDataFrame(rdd, "boolean").collect()
# TypeError: field value: BooleanType can not accept object 1 in type class 'int'>

注冊DataFrame為臨時表

spark.registerDataFrameAsTable(df, "table1")
spark.dropTempTable("table1")

獲取和修改配置

print(spark.getConf("spark.sql.shuffle.partitions"))  # 200
print(spark.getConf("spark.sql.shuffle.partitions", u"10"))  # 10
print(spark.setConf("spark.sql.shuffle.partitions", u"50"))  # None
print(spark.getConf("spark.sql.shuffle.partitions", u"10"))  # 50

注冊自定義函數

spark.registerFunction("stringLengthString", lambda x: len(x))
output = spark.sql("SELECT stringLengthString('test')").collect()
print(output)
# [Row(stringLengthString(test)='4')]

spark.registerFunction("stringLengthString", lambda x: len(x), IntegerType())
output = spark.sql("SELECT stringLengthString('test')").collect()
print(output)
# [Row(stringLengthString(test)=4)]

spark.udf.register("stringLengthInt", lambda x: len(x), IntegerType())
output = spark.sql("SELECT stringLengthInt('test')").collect()
print(output)
# [Row(stringLengthInt(test)=4)]

查看臨時表列表

可以查看所有臨時表名稱和對象。

spark.registerDataFrameAsTable(df, "table1")
print(spark.tableNames())  # ['table1']
print(spark.tables())  # DataFrame[database: string, tableName: string, isTemporary: boolean]
print("table1" in spark.tableNames())  # True
print("table1" in spark.tableNames("default"))  # True

spark.registerDataFrameAsTable(df, "table1")
df2 = spark.tables()
df2.filter("tableName = 'table1'").first()
print(df2)  # DataFrame[database: string, tableName: string, isTemporary: boolean]

從其他數據源創建DataFrame

MySQL

前提是需要下載jar包。
Mysql-connector-java.jar

from pyspark import SparkContext
from pyspark.sql import SQLContext
import pyspark.sql.functions as F


sc = SparkContext("local", appName="mysqltest")
sqlContext = SQLContext(sc)
df = sqlContext.read.format("jdbc").options(
    url="jdbc:mysql://localhost:3306/mydata?user=rootpassword=mysql"
        "useUnicode=truecharacterEncoding=utf-8useJDBCCompliantTimezoneShift=true"
        "useLegacyDatetimeCode=falseserverTimezone=UTC ", dbtable="detail_data").load()
df.show(n=5)
sc.stop()

參考

RDD和DataFrame的區別
spark官方文檔 翻譯 之pyspark.sql.SQLContext

到此這篇關于pyspark創建DataFrame的幾種方法的文章就介紹到這了,更多相關pyspark創建DataFrame 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pyspark 讀取csv文件創建DataFrame的兩種方法

標簽:黔西 鷹潭 黑龍江 四川 常德 益陽 惠州 上海

巨人網絡通訊聲明:本文標題《pyspark創建DataFrame的幾種方法》,本文關鍵詞  pyspark,創建,DataFrame,的,幾種,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pyspark創建DataFrame的幾種方法》相關的同類信息!
  • 本頁收集關于pyspark創建DataFrame的幾種方法的相關信息資訊供網民參考!
  • 推薦文章
    一本高清在线| a级精品九九九大片免费看| 国产麻豆精品高清在线播放| 一级毛片视频免费| 青青青草视频在线观看| 一级女人毛片人一女人| 国产视频一区二区在线观看| 国产一区二区精品在线观看| 高清一级做a爱过程不卡视频| 成人免费网站久久久| 一级毛片看真人在线视频| 国产亚洲免费观看| 九九九网站| 亚欧成人毛片一区二区三区四区 | 亚洲第一色在线| 精品久久久久久中文| 亚洲精品永久一区| 高清一级淫片a级中文字幕| 美女免费精品视频在线观看| 国产麻豆精品视频| 成人在免费观看视频国产| 91麻豆国产级在线| 九九精品在线| 青青久久国产成人免费网站| 免费毛片基地| 亚洲 男人 天堂| 成人高清视频免费观看| 精品国产一区二区三区免费 | 精品视频在线观看一区二区| 日本在线播放一区| 精品视频在线看 | 一级毛片视频免费| 日韩专区一区| 尤物视频网站在线观看| 国产视频一区二区在线观看| 九九久久国产精品大片| 久久国产精品自由自在| 国产亚洲精品aaa大片| 韩国三级视频在线观看| 美女免费黄网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 四虎久久影院| 国产一区免费在线观看| 国产一区二区精品| 黄色免费三级| 欧美国产日韩精品| 美女免费精品高清毛片在线视 | 青草国产在线| 99久久精品国产麻豆| 青草国产在线| 国产一区二区福利久久| 精品在线观看国产| 麻豆网站在线看| 99久久精品国产国产毛片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频在线看| 国产国语对白一级毛片| 中文字幕一区二区三区精彩视频| 国产高清在线精品一区二区| 91麻豆精品国产高清在线| 欧美激情影院| 色综合久久天天综线观看| 精品在线视频播放| 亚欧乱色一区二区三区| 一 级 黄 中国色 片| 国产伦精品一区二区三区在线观看| 国产一区免费在线观看| 久久国产精品自线拍免费| 91麻豆高清国产在线播放| 九九精品影院| 日韩免费在线观看视频| 国产麻豆精品| 国产伦精品一区三区视频| 久久国产一久久高清| 99色播| 欧美激情一区二区三区视频 | 午夜家庭影院| 999精品视频在线| 午夜在线影院| 久草免费在线观看| 精品视频免费在线| 日本在线www| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草影院 | 日韩av片免费播放| 日韩在线观看免费完整版视频| 九九久久国产精品| 青青青草影院 | 天堂网中文在线| 韩国三级一区| 国产原创中文字幕| 国产原创中文字幕| 国产一区二区精品尤物| 国产精品自拍在线| 免费国产一级特黄aa大片在线| 天天色色色| 久久久久久久男人的天堂| 可以免费看污视频的网站| 美国一区二区三区| 91麻豆tv| 欧美激情一区二区三区在线 | 亚洲 激情| 欧美大片毛片aaa免费看| 国产伦精品一区二区三区在线观看| 日韩在线观看视频黄| 成人免费网站久久久| 欧美18性精品| 国产视频在线免费观看| 精品视频在线看 | 久久99欧美| 99色视频| 国产91素人搭讪系列天堂| 欧美激情伊人| 你懂的国产精品| 四虎论坛| 久久精品欧美一区二区| 国产亚洲男人的天堂在线观看| 黄视频网站免费看| 精品在线观看国产| 精品视频免费看| 日韩中文字幕在线亚洲一区 | 日韩中文字幕在线亚洲一区 | 一级女性大黄生活片免费| 免费一级片在线| 国产91精品一区| 久草免费在线视频| 欧美爱爱网| 可以免费看污视频的网站| 美女免费精品高清毛片在线视 | 久久99这里只有精品国产| 日韩欧美一二三区| 韩国三级视频在线观看| 色综合久久手机在线| 欧美a级片免费看| 久久国产影院| 欧美激情一区二区三区在线| 成人高清视频在线观看| 国产精品自拍在线观看| 毛片电影网| 久久精品道一区二区三区| 国产伦久视频免费观看 视频| 91麻豆国产| 国产精品1024在线永久免费| 91麻豆tv| 精品国产亚洲人成在线| 国产高清视频免费| 精品视频在线观看一区二区| 欧美大片aaaa一级毛片| 成人影视在线播放| 亚洲天堂免费观看| 亚洲 男人 天堂| 美女免费精品高清毛片在线视 | 麻豆网站在线看| 美女免费毛片| 亚洲女初尝黑人巨高清在线观看| 欧美日本免费| 韩国妈妈的朋友在线播放 | 九九精品在线| 国产国语在线播放视频| a级毛片免费观看网站| 久久福利影视| 青青青草影院 | 国产91精品系列在线观看| 99久久精品国产高清一区二区 | 国产成人精品综合| 中文字幕一区二区三区精彩视频| 亚洲天堂一区二区三区四区| 免费一级生活片| 免费的黄色小视频| 国产一区二区精品| 国产极品白嫩美女在线观看看 | 国产伦久视频免费观看视频| 久草免费在线视频| 久久99中文字幕久久| 久久精品欧美一区二区| 欧美1卡一卡二卡三新区| 成人免费网站久久久| 欧美激情一区二区三区视频 | 欧美另类videosbestsex高清| 麻豆系列 在线视频| 欧美日本国产| 91麻豆精品国产自产在线 | 欧美电影免费看大全| 九九久久99| 欧美国产日韩一区二区三区| 精品久久久久久中文| 久久国产精品只做精品| 一级毛片视频免费| 日本在线不卡视频| 日韩avdvd| 97视频免费在线观看| 免费的黄色小视频| 亚州视频一区二区| 久久精品成人一区二区三区| 美国一区二区三区| 国产视频网站在线观看| 人人干人人插| 日韩免费在线视频| 精品毛片视频| 欧美激情影院|