2
我有以下情況下類:明確的轉換閱讀的.csv與案例類星火2.1.0
case class OrderDetails(OrderID : String, ProductID : String, UnitPrice : Double,
Qty : Int, Discount : Double)
我想讀這CSV:https://github.com/xsankar/fdps-v3/blob/master/data/NW-Order-Details.csv
這是我的代碼:
val spark = SparkSession.builder.master(sparkMaster).appName(sparkAppName).getOrCreate()
import spark.implicits._
val orderDetails = spark.read.option("header","true").csv(inputFiles + "NW-Order-Details.csv").as[OrderDetails]
和錯誤是:
Exception in thread "main" org.apache.spark.sql.AnalysisException:
Cannot up cast `UnitPrice` from string to double as it may truncate
The type path of the target object is:
- field (class: "scala.Double", name: "UnitPrice")
- root class: "es.own3dh2so4.OrderDetails"
You can either add an explicit cast to the input data or choose a higher precision type of the field in the target object;
如果所有字段都是「雙」值,爲什麼不能進行轉換?我不明白什麼?
星火版本2.1.0,斯卡拉版本2.11.7
感謝您的答覆,我剛剛發現以下屬性,可以發生在你和你推斷的所有字段'選項(「則InferSchema」,「T街「)'。 關於Scala convenions我使用了上層駱駝案例,因爲需要,因爲csv頭是大寫 – own3dh2so4
根據我的經驗,這隻有時適用於這種情況。如果這一切都需要,那很酷。 – Vidya
至於約定的事情,有很多方法 - 例如,通過命名列,因爲你希望他們使用'toDf'。但我可以看到爲什麼這感覺像不必要的忙碌。我個人在會議上非常重要 - 特別是專業項目,所以我的代碼通過了靜態分析測試和代碼評論。 – Vidya