成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何從 Spark 的 DataFrame 中取出具體某一行?

開發 前端 Spark
Spark 中 DataFrame 是 RDD 的擴展,限于其分布式與彈性內存特性,我們沒法直接進行類似 df.iloc(r, c) 的操作來取出其某一行。

[[411938]]

如何從 Spark 的 DataFrame 中取出具體某一行?

根據阿里專家Spark的DataFrame不是真正的DataFrame-秦續業的文章-知乎[1]的文章:

  • DataFrame 應該有『保證順序,行列對稱』等規律
  • 因此「Spark DataFrame 和 Koalas 不是真正的 DataFrame」

確實可以運行,但卻看到一句話,大意是數據會被放到一個分區來執行,這正是因為數據本身之間并不保證順序,因此只能把數據收集到一起,排序,再調用 shift。這樣就不再是一個分布式的程序了,甚至比 pandas 本身更慢。

我們可以明確一個前提:Spark 中 DataFrame 是 RDD 的擴展,限于其分布式與彈性內存特性,我們沒法直接進行類似 df.iloc(r, c) 的操作來取出其某一行。

但是現在我有個需求,分箱,具體來講,需要『排序后遍歷每一行及其鄰居比如 i 與 i+j』,因此,我們必須能夠獲取數據的某一行!

不知道有沒有高手有好的方法?我只想到了以下幾招!

1/3排序后select再collect

collect 是將 DataFrame 轉換為數組放到內存中來。但是 Spark 處理的數據一般都很大,直接轉為數組,會爆內存。

因此不能直接 collect 。

要處理哪一列,就直接 select('列名') 取出這一列就好,再 collect 。我的數據有 2e5 * 2e4 這么多,因此 select 后只剩一列大小為 2e5 * 1 ,還是可以 collect 的。

這顯然不是個好方法!因為無法處理真正的大數據,比如行很多時。

2/3排序后加index然后用SQL查找

給 DataFrame 實例 .sort("列名") 后,用 SQL 語句查找:

 

  1. select 列名 from df_table where 索引列名 = i 

我對于 SQL 不是很了解,因此這個做法只是在構思階段。

此外,我不清楚 SQL 的性能!我要調用很多次 df.iloc[i, 列] ,那這樣會不會太慢了?

3/3排序后加index然后轉置查找列名

這個想法也只是停留在腦子里!因為會有些難度。

給每一行加索引列,從0開始計數,然后把矩陣轉置,新的列名就用索引列來做。

之后再取第 i 個數,就 df(i.toString) 就行。

這個方法似乎靠譜。

附加方案:ml.feature.Bucketizer

  1. import org.apache.spark.ml.feature.{Bucketizer, QuantileDiscretizer} 

spark中 Bucketizer 的作用和我實現的需求差不多(盡管細節不同),我猜測其中也應該有相似邏輯。有能力和精力了應該去讀讀源碼,看看官方怎么實現的。

參考資料

[1]Spark的DataFrame不是真正的DataFrame-秦續業的文章-知乎:

https://zhuanlan.zhihu.com/p/135329592

 

責任編輯:姜華 來源: Piper蛋窩
相關推薦

2021-07-21 07:55:22

技術

2022-11-08 09:38:18

Linux命令行刪除文件

2020-01-10 22:56:56

Python圖像處理Linux

2020-09-09 16:00:22

Linux進程

2020-08-24 08:25:48

Python開發工具

2016-12-02 08:53:18

Python一行代碼

2017-04-05 11:10:23

Javascript代碼前端

2024-11-13 09:27:04

2025-01-20 08:35:53

2011-03-25 10:49:30

Join一對多

2021-11-02 16:25:41

Python代碼技巧

2015-11-09 17:59:57

2015-11-09 17:04:57

2014-02-12 13:43:50

代碼并行任務

2022-04-09 09:11:33

Python

2020-08-12 14:54:00

Python代碼開發

2021-07-26 10:32:54

MySQL數據庫存儲

2020-07-20 09:20:48

代碼geventPython

2021-10-19 17:52:16

Git命令算數

2021-08-31 09:49:37

CPU執行語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美成人精品 | 久久久久久久久久一区二区 | 国产激情偷乱视频一区二区三区 | 亚洲欧美视频一区二区 | 亚洲第一视频网站 | 99热精品在线 | 亚洲电影一区 | 欧美日韩成人在线 | 国产一区二区免费 | 欧美一级免费看 | 视频在线观看亚洲 | 亚洲3p| 午夜爽爽爽男女免费观看 | 欧美一区二区三区在线 | 97视频精品 | 精品国产乱码久久久久久影片 | 欧美11一13sex性hd | 99精品视频网| 一区二区三区av | 欧美理论 | 三级免费网 | 日韩网| 久久国产精品久久国产精品 | 成人欧美一区二区三区在线观看 | 一区二区三区免费在线观看 | 成人免费视频一区二区 | 久久精品播放 | 久久成人免费视频 | 日本一区二区高清不卡 | 婷婷在线网站 | 亚洲天堂免费 | 99国内精品| 7777奇米影视 | 亚洲成人免费av | 日韩中文在线 | 精品久久久久久久久久久久久久久久久 | 91极品视频| 日本一区二区三区免费观看 | 欧美一区二区三区在线看 | 欧美日韩国产一区二区三区 | 亚洲手机视频在线 |