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

磚自動裝卸機streamReader不包括分區列作為輸出的一部分。

tech2cloud
新的貢獻者二世

我已經在源文件夾結構等

/交易/ date_ = 2023-01-20 / hr_ = 02 / tras01.csv

/交易/ date_ = 2023-01-20 / hr_ = 03 / tras02.csv

‘date_’和‘hr_’是我的分區和現在的數據集。但streamReader不讀這些列作為輸出。而相同的文件,如果我讀CSV列顯示。在這裏我丟失的東西嗎?

圖像請幫助!

2回答2

匿名
不適用

從文件讀取數據時使用火花的StreamReader,分區列(在你的情況下,date_和hr_)不會自動推斷作為輸出列。相反,他們使用動態分區數據基於他們的價值觀。

分區列包含在輸出中,您可以指定他們明確使用StreamReader的選項()方法。這裏有一個例子如何閱讀你的數據,包括分區列輸出:

從pyspark.sql。功能導入input_file_name df = spark.read.format (csv) \ .option(“頭”,“真正的”)\ .option (“inferSchema”,“真正的”)\ .option (“dateFormat”、“yyyy-MM-dd”) \ .option (“timestampFormat”、“yyyy-MM-dd HH: mm: ss”) \ .option (“basePath”、“/交易/”)\ .option (“pathGlobFilter”、“* . csv”) \ .option (“recursiveFileLookup”,“真正的”)\ .option (“partitionColumn”、“date_, hr_”) \ .option (“numPartitions”、“100”) \ .load(“/交易/”)df = df。withColumn (“date_ df (“date_”) .cast(“日期”))\ .withColumn (“hr_ df (“hr_”) .cast(整數))\ .withColumn(“文件名”,input_file_name ())

在這個示例中,我們指定basePath /事務,這是分區的根目錄文件。我們也隻使用pathGlobFilter選項過濾CSV文件,和recursiveFileLookup尋找文件在所有子目錄。partitionColumn選項設置為“date_ hr_”表明這些列的數據分區。我們也將numPartitions設置為“100”控製的分區結果DataFrame。最後,我們使用withColumn()方法將date_列日期類型和hr_列整數類型。我們也添加一個新的列稱為文件名使用input_file_name()函數,它返回文件,每一行的名字的來源。這些選項設置,生成的df DataFrame將包括date_和hr_列在輸出中,連同其他CSV文件中的列。

Vidula_Khanna
主持人
主持人

嗨@Ravi Vishwakarma

謝謝你發布你的問題在我們的社區!我們很高興幫助你。

幫助我們為您提供最準確的信息,請您花一些時間來回顧反應和選擇一個最好的回答了你的問題嗎?

這也將有助於其他社區成員可能也有類似的問題在未來。謝謝你的參與,讓我們知道如果你需要任何進一步的援助!

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

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

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

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

Baidu
map