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

如何與不同的列類型合並拚花嗎

Erik_L
因素二世

問題

在S3中我有一個目錄和一係列的數據文件,如“數據- 20221101.鋪”。他們都有相同的列:時間戳,reading_a, reading_b reading_c。在前麵的文件,閱讀是浮動,但在後來的雙打。當我運行下麵的閱讀,這失敗由於合並失敗。

從pyspark.sql。功能導入坳,從pyspark.sql expr。類型進口倍增式、LongType StructField StructType模式= StructType ([StructField(“時間戳”,LongType ()), StructField (“reading_a倍增式()),StructField (“reading_b倍增式()),StructField (“reading_c倍增式()),])(spark.read.schema(模式).option (“mergeSchema”,假).parquet (s3: / /閱讀/道路/ /數據/數據- * .parquet) .write .saveAsTable (readings.data))

和它給以下錯誤:

. lang。org.apache.spark.sql.catalyst.expressions ClassCastException。org.apache.spark.sql.catalyst.expressions.MutableFloat MutableDouble不能投

嚐試

  • 打開和關閉mergeSchema;
  • 設置模式,不設置模式;和
  • 讀取單個文件(成功)。

我認為是怎麼回事

浮子式火花讀取一個文件,然後試圖繼續閱讀文件,向上轉型雙類型之前,但這失敗當它到達文件的兩倍。真的火花應該服從我的模式從一開始就和總是向上的。

更多信息

別人做了相當深入探究解決這個和展示了不同的方法,但他們最終的解決方案是一個黑客和不可持續的。他們分別讀取每個文件,然後將他們的模式,然後合並它們。這火花的否定很多好處神奇的閱讀能力。

https://medium.com/data-arena/merging-different-schemas-in-apache-spark-2a9caca2c5ce

問題

我怎麼能讀許多文件隻有稍微不同的鑲花類型,而不必做這個黑客?

1回複1

User16869509900
價值貢獻

1)你能讓我們知道錯誤消息當你不設置模式& mergeSchema使用

2)當您定義模式(FloatType) &使用mergeSchema嗎?你得到錯誤信息做什麼?

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

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

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

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

Baidu
map