取消
顯示的結果
而不是尋找
你的意思是:

平深嵌套的結構體

Aidonis
新的貢獻者三世

你好,

我有一個深層嵌套的火花dataframe下麵的結構類似

| - - - id:整數(nullable = true)

|——低:結構(可空= true)

| |——field_a:整數(nullable = true)

| |——上:結構(containsNull = true)

| | |——field_A:整數(nullable = true)

| | | - num:結構(containsNull = true)

| | | |——field_1:整數(nullable = true)

| | | |——field_2:字符串(nullable = true)

我希望平這,我有一個消息結構體

| - - - id:整數(nullable = true)

|——低:結構(可空= true)

| - - -低。field_a:整數(nullable = true)

| - - -低。:上部結構(containsNull = true)

|——lower.upper。field_A:整數(nullable = true)

|——lower.upper。num:結構(containsNull = true)

|——lower.upper.num。field_1:整數(nullable = true)

|——lower.upper.num。field_2:字符串(nullable = true)

這種變化的原因是我可以把這變成一個漂亮的表,每一列是一個嵌套的結構體元素。列名不該對我多重要。

我知道我可以使用df。選擇(“*”、“低。*”、“lower.upper。*”、“lower.upper.num。*”)來獲得我想要的不過繼承者訣竅....

這個結構會隨著時間改變,我尋找一個優雅的方式做扁平結構沒有引用特定列。

什麼好主意嗎?或建議嗎?

謝謝

Aidonis

1接受解決方案

接受的解決方案

Hubert_Dudek1
尊敬的貢獻者三世

你需要使用類似:

從pyspark.sql。類型進口StructType def平(=沒有模式,前綴):字段=[]領域的模式。字段:名稱=前綴+”。' + field.name如果其他前綴field.name dtype =。數據類型如果isinstance (dtype StructType):字段+ =平(dtype前綴=名稱):fields.append(名字)返回字段df.select(平(df.schema))

在原帖子查看解決方案

2回答2

Hubert_Dudek1
尊敬的貢獻者三世

你需要使用類似:

從pyspark.sql。類型進口StructType def平(=沒有模式,前綴):字段=[]領域的模式。字段:名稱=前綴+”。' + field.name如果其他前綴field.name dtype =。數據類型如果isinstance (dtype StructType):字段+ =平(dtype前綴=名稱):fields.append(名字)返回字段df.select(平(df.schema))

daniel_sahal
尊敬的貢獻者三世

@Aidan霍夫曼

https://medium.com/@thomaspt748 how-to-flatten-json-files-dynamically-using-apache-pyspark-c6b1b5fd4……

在這裏你可以找到一塊平整json代碼基於數據類型(數組或結構)

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map