2016-06-20 41 views
-1

當我從json文件創建數據框時,json文件中的字段在數據框中默認排序。如何避免這種排序?
Jsonfile具有每行一個JSON消息:
Json字段在轉換爲spark時默認排序DataFrame

{"name":"john","age":10,"class":2} {"name":"rambo","age":11,"class":3}

當我創建從該文件中的數據幀爲:
val jDF = sqlContext.read.json("/user/inputfiles/sample.json")

一個DF創建爲
jDF: org.apache.spark.sql.DataFrame = [age: bigint, class: bigint, name: string] 。在DF中,字段默認排序。
我們如何避免這種情況發生?


我無法理解這裏出了什麼問題。

感謝您解決問題的任何幫助。

+2

每個問題詢問**一個**問題。 –

+0

你是說DF最終的屬性與JSON的順序不同,但JSON對象是**無序的**字段集合; [參考](http://json.org)。 '{「a」:1,「b」:2}'和'{「b」:2,「a」:1}'完全一樣。所以在DF中沒有「秩序」,DF必須注意。 (不知道DF的任何內容,所以我不知道那些是否有訂單。) –

+0

感謝@ T.J.Crowder的迴應。我必須按照與源json相同的順序創建一個列順序的表。所以,在數據框中對json屬性的排序令我感到困擾。 – SrinivasR

回答

1

問題1:

一個簡單的方法是在DataFrameselect

val newDF = jDF.select("name","age","class") 

參數的順序是你想要的列的順序。

但是這可能是冗長的,如果有很多列,你必須自己定義順序。

相關問題