當我們在使用spark1.6的時候,當我們創建SQLContext讀取一個文件之后,返回DataFrame類型的變量可以直接.map操作,不會報錯。但是升級之后會包一個錯誤,如下:
報錯:No implicits found for parameter evidence$6: Encoder[Unit]

主要的錯誤原因為:
******error: Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases. resDf_upd.map(row => {******
此時有三種解決方案:
第一種:

然后大家發現不會在報錯誤了。
第二種:

這樣也可以
第三種:
這種是最麻煩的一種,可以參考官網

官網上給的是讓自定義一個 Encoders,然后下面是我根據官網的例子,寫的樣例:

可以看到,也是可以用的,但是相比較上面兩個是非常的麻煩的,所以推薦第一種和第二種,強推第二種,簡單。
說明:
以上代碼中我用的是SparkSession創建的,當然也可以用SQLContext來創建,但是SQLContext已經過時,不再推薦。
若是在用SQLContext時,遇到以上錯誤,同理解決。
