我有一個相當小的,簡單的DataFrame,月:
month.schema
org.apache.spark.sql.types。StructType = StructType (StructField(月,DateType,真的),StructField (real_month TimestampType,真的),StructField (month_millis LongType,真的)
本月Dataframe來源於一個Dataframe最初創建從一個來自sc.parallelize抽樣(…)。
我試著將其保存為一個表:
month.write.mode (SaveMode.Overwrite) .saveAsTable (“month_x2”)
我得到一個例外。問題的根源似乎(也參見下麵的全部加亮):
引起的:java。IOException:文件已經存在:/ databricks-prod-storage-virginia dbc - 44061 - e6b - 9 - dd3/0 / user /蜂巢/倉庫/ month_x2 /部分- r - 00002 - 9858 - e235 - 1 - c6c - 4276 - 800 d - 18 - c8a760a416.gz.parquet
我重新啟動集群,重新筆記本,每次都得到相同的結果。我用覆蓋模式(雖然我認為non-overwrite產生不同的錯誤)。同時,我得到這個錯誤,即使我改變表名(即第一saveAsTable甚至呼籲一個給定的名稱)。
錯誤是在附加文件中
@ReKa謝謝堆。
我用S3a已經和模式非常明確,看起來像這樣:
OUTPUT_SCHEMA = StructType ([StructField (c1, StringType(),真的),StructField (c2, ArrayType (StringType()),真的),StructField (c3, ShortType(),真的),StructField (“c4 BooleanType(),真的)))
我認為這種模式是不夠緊。
筆記:
+“計算優化問題”:你有什麼類型的問題?還是隻寫數據?
+ json和轉換成最後拚花(但注意大小文件可以顯示腐敗分區):你有更多的信息嗎?
多謝。