我從一個xml檔案中倒入了一個列,這個列的內容是[3.0,1],[3.0,2],[3.0,3]這種二維陣列,其中后一個數1,2,3是其索引。我用下面賦值模擬出來了。
scala> val df1 = sc.parallelize(List(("[34.0,1],[34.0,2],[175.0,3]", 30), ("[3.0,1],[3.0,2],[3.0,3]", 36), ("[127.0,1],[127.0,2],[127.0,3]", 27))).toDF("infoComb", "age")
df1: org.apache.spark.sql.DataFrame = [infoComb: string, age: int]
scala> df1.show(false)
+-----------------------------+---+
|infoComb |age|
+-----------------------------+---+
|[34.0,1],[34.0,2],[175.0,3] |30 |
|[3.0,1],[3.0,2],[3.0,3] |36 |
|[127.0,1],[127.0,2],[127.0,3]|27 |
+-----------------------------+---+
我的問題是:我怎么樣在scala中把[127.0,1]的127.0取出來?
麻煩各位大俠看看。
uj5u.com熱心網友回復:
其實雖然模擬了,但是資料型別不同,在資料庫中infoComb 這個欄位是以array<struct<_VALUE:double,_i:bigint>> 這種資料型別存在uj5u.com熱心網友回復:
你可能要試一試正則uj5u.com熱心網友回復:
識訓前一個答案,既然spark對于相應的列有了型別上的規定,當然是可以進行遍歷的。
我記得好像是wrapped 序列相關
你可以嘗試對于該df進行map操作
使用getAS[T] 函式將相應的列轉換為你需要的模板序列型別,
之后再裝換成你想要的型別(呼叫若干to函式)
如果你有intellji idea這樣的推斷編輯器,可以將要使用的型別直接顯示
出來,如在intelllji idea中使用 alt + enter
游標停在的那個物件就會顯示出它的型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/61473.html
標籤:Spark
