• <nav id="dstbx"></nav>

    <nav id="dstbx"></nav>
    1. <form id="dstbx"></form>
    2. <small id="dstbx"></small>

      教育行業A股IPO第一股(股票代碼 003032)

      全國咨詢/投訴熱線:400-618-4000

      怎樣操作DataFrame?不同操作風格有什么區別?

      更新時間:2021年04月14日16時00分 來源:傳智教育 瀏覽次數:

      傳智教育-一樣的教育,不一樣的品質

      DataFrame提供了兩種語法風格,即DSL風格語法和SQL風格語法,二者在功能上并無區別,僅僅是根據用戶習慣,自定義選擇操作方式。接下來,我們通過兩種語法風格,分別講解DataFrame操作的具體方法。

      1.DSL風格操作

      DataFrame提供了一個領域特定語言(DSL)以方便操作結構化數據,下面將針對DSL操作風格,講解DataFrame常用操作示例。

      show():查看DataFrame中的具體內容信息。printSchema():查看DataFrame的Schema信息。select():查看DataFrame中選取部分列的數據。

      下面演示查看personDF對象的name字段數據,具體代碼如下所示。

      scala > personDF.select(personDF.col("name")).show()
      +--------+|  name |
      +--------+|zhangsan|
      |   lisi|
      | wangwu|
      | zhaoliu|
      | tianqi||  jerry|
      +--------+

      上述代碼中,查詢name字段的數據還可以直接使用“personDF.select(“name”).show”代碼直接查詢。

      select()操作還可以實現對列名進行重命名,具體代碼如下所示。

      scala > personDF.select(personDF("name").as("username"),
      personDF("age")).show()
      +--------+---+
      |username|age|
      +--------+---+
      |zhangsan| 20|
      |  lisi| 29|
      | wangwu| 25|
      | zhaoliu| 30|
      | tianqi| 35|
      |  jerry| 40|
      +--------+---+

      從返回結果看出,原name字段重命名為username字段。

      filter():實現條件查詢,過濾出想要的結果。

      下面演示過濾age大于等于25的數據,具體代碼如下所示。

      從上述返回結果可以看出,成功過濾出符合大于等于25歲的條件數據。

      groupBy():對記錄進行分組。

      下面演示按年齡進行分組并統計相同年齡的人數,具體代碼如下所示。

      scala > personDF.groupBy("age").count().show()
      +---+-----+
      |age|count|
      +---+-----+
      | 20|  1|
      | 40|  1|
      | 35|  1|
      | 25|  1|
      | 29|  1|
      | 30|  1|
      +---+-----+

      從上述返回結果看出,groupBy()成功統計相同年齡的人數信息。

      sort():對特定字段進行排序操作。

      下面演示按年齡降序排列,具體代碼如下所示。

      scala > personDF.sort(personDF("age").desc).show()
      +---+---------+---+
      | id|  name |age|
      +---+---------+---+
      | 6|  jerry | 40|
      | 5|  tianqi  | 35|
      | 4| zhaoliu | 30|
      | 2|  lisi  | 29|
      | 3| wangwu  | 25|
      | 1|zhangsan | 20|
      +---+--------+---+

      從上述返回結果看出,數據成功按照年齡降序排列。

      2.SQL風格操作

      DataFrame的強大之處就是我們可以將它看作是一個關系型數據表,然后可以在程序中直接使用spark.sql()的方式執行SQL查詢,結果將作為一個DataFrame返回。使用SQL風格操作的前提是需要將DataFrame注冊成一個臨時表,代碼如下所示。

      scala > personDF.registerTempTable("t_person")

      下面通過多個示例,演示使用SQL風格方式操作DataFrame。

      (1) 查詢年齡最大的前兩名人的信息,具體執行代碼如下所示。

      scala > spark.sql("select * from t_person order by age desc limit 2").show()
      +---+------+---+
      | id| name|age|
      +---+------+---+
      | 6| jerry| 40|
      | 5|tianqi| 35|
      +---+------+---+

      (2) 查詢年齡大于25的人的信息,具體代碼如下所示。

      scala > spark.sql("select * from t_person where age > 25").show()
      +---+-------+---+
      | id|  name|age|
      +---+-------+---+
      | 2|  lisi| 29|
      | 4|zhaoliu| 30|
      | 5| tianqi| 35|
      | 6| jerry| 40|
      +---+-------+---+

      DataFrame操作方式簡單,并且功能強大,熟悉SQL語法的開發者都能夠快速地掌握DataFrame的操作,本小節只講解了部分常用的操作方式,讀者可通過Spark官方文檔http://spark.apache.org/docs/latest/sql-programming-guide.html詳細學習DataFrame的操作方式。

      猜你喜歡:

      DataFrame是什么意思?與RDD相比有哪些優點?

      多種方法創建DataFrame【大數據技術文章】

      怎樣操作Spark SQL性能調優?

      傳智教育大數據培訓

      神马影院我不卡,农村丰满肥熟老妇女,午夜电影网,2018日日摸夜夜添夜夜添 网站地图 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>