亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試將數據幀行映射到更新行時出現編碼器錯誤

嘗試將數據幀行映射到更新行時出現編碼器錯誤

嘗試將數據幀行映射到更新行時出現編碼器錯誤當我試圖在我的代碼中做同樣的事情,如下所述dataframe.map(row => {   val row1 = row.getAs[String](1)   val make = if (row1.toLowerCase == "tesla") "S" else row1  Row(row(0),make,row(2))})我從這里采取了上述參考: Scala:如何使用scala替換Dataframs中的值 但是我收到編碼器錯誤無法找到存儲在數據集中的類型的編碼器。導入spark.im plicits支持原始類型(Int,S tring等)和產品類型(case類)._將在以后的版本中添加對序列化其他類型的支持。注意:我正在使用spark 2.0!
查看完整描述

2 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

對于預先知道數據幀模式的情況,@ zero323給出的答案是解決方案

但是對于具有動態模式/或將多個數據幀傳遞給泛型函數的場景:以下代碼對我們起作用,同時從1.5.0遷移到2.2.0

import org.apache.spark.sql.Rowval df = Seq(
   (2012, "Tesla", "S"), (1997, "Ford", "E350"),
   (2015, "Chevy", "Volt")
 ).toDF("year", "make", "model")val data = df.rdd.map(row => {
  val row1 = row.getAs[String](1)
  val make = if (row1.toLowerCase == "tesla") "S" else row1  Row(row(0),make,row(2))})

此代碼在兩個版本的spark上執行。

缺點:數據幀/數據集api上的spark提供的優化不會被應用。


查看完整回答
反對 回復 2019-08-12
  • 2 回答
  • 0 關注
  • 541 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號