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

如何從文本文件中讀取模式存儲在雲存儲

saninanda
新的貢獻者二世

我有文件。csv或。鋪在創建數據幀閱讀我們可以顯式定義模式與結構體類型。而不是寫在筆記本上的模式想創建模式允許說我所有的csv csv_schema和我有一個模式存儲在雲存儲中。如果任何添加或刪除我將分別用csv_schema文件。

筆記本在創建數據幀在閱讀文件想通過這個模式存儲在單獨的文件中,請建議如果我們可以在python編寫任何函數或其他想法自動化模式創建和添加數據幀的不同文件係統

所以它像,我有模式文件。模式,模式定義了所有的拚花其通用文件/任何文件。有點像

一個。模式的文本文件包含下麵的細節

代碼基於schema1中= StructType ([StructField (x1, StringType(),真的),StructField(“名字”,StringType(),真的),StructField(“價格”,倍增式(),真的)))

讀的。模式從筆記本創建所需的存儲模式需要通過dataframe。

df = spark.read。模式(普通模式)。拚花. .

7回複7

shyam_9
價值貢獻

嗨@sani南達,

請按照下麵的步驟,

  • 閱讀模式作為一個CSV文件,將標題設置為true。這將給一個空dataframe但正確的標題。
  • 提取模式文件的列名稱。
column_names = spark.read.option(“標題”,真的). csv (schemafile) .columns
  • 現在讀數據文件,更改默認模式中列名的dataframe。
df = spark.read。選項(“頭”,“假”)。選項(“inferSchema”,“真正的”). csv(丟失)。toDF (column_names: _ *)

saninanda
新的貢獻者二世

嗨@shyamspr

感謝分享答案。其實我的方法試過喜歡的頭從原始文件名然後添加這些了。但問題是要根據需要顯式地改變數據類型沒有閱讀推理模式。

有什麼方法可以添加數據類型以及列名編程的情況我們有30 +列。

這就是為什麼試圖單獨模式文件,列在列表或structfiled名稱和數據類型。

shyam_9
價值貢獻

你也可以通過使用selectExpr這樣做

df2 = df。selectExpr(“鑄(“col1”字符串)col1”)

還有一個方法如下的形象

0693年f000007ormtaac

saninanda
新的貢獻者二世

@shyamspr,謝謝但說兩個場景就像我們需要添加的列數據類型顯式地在筆記本,考慮30到40 +列牽引,沒有可重用每個筆記本需要添加模式。

就像你更新說自定義模式結構,是存儲在一個文件custom_schema。三夥人試圖從該文件custom_schema應用模式。txt, Struct類型和字段定義,在數據從文件讀取路徑和dataframe創造

但不能讓它。所以在想如果任何python函數或任何實用程序可以幫助形成了可重用的代碼從文件讀取模式定義和數據幀期間我們同樣可以使用。

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

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

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

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

Baidu
map