[英]Spark - scala - How to convert DataFrame to custom object?
這是塊代碼。 在代碼片段中,我正在讀取多行json
並將其轉換為Emp
對象。
def main(args: Array[String]): Unit = {
val filePath = Configuration.folderPath + "emp_unformatted.json"
val sparkConfig = new SparkConf().setMaster("local[2]").setAppName("findEmp")
val sparkContext = new SparkContext(sparkConfig)
val sqlContext = new SQLContext(sparkContext)
val formattedJsonData = sqlContext.read.option("multiline", "true").json(filePath)
val res = formattedJsonData.rdd.map(empParser)
for (e <- res.take(2)) println(e.name + " " + e.company + " " + e.about)
}
case class Emp(name: String, company: String, email: String, address: String, about: String)
def empParser(row: Row): Emp =
{
new Emp(row.getAs("name"), row.getAs("company"), row.getAs("email"), row.getAs("address"), row.getAs("about"))
}
我的問題是該行的“ formattedJsonData.rdd.map(empParser)
”方法是否正確? 我正在轉換為Emp
對象的RDD
。 1.是正確的方法。 2.假設我有1L,1M記錄,在這種情況下會出現性能問題。 3.有什么更好的選擇來轉換emp的集合
如果您使用的是spark 2
,則可以使用也是type-safe
dataset
,而且它還提供了DataFrames的性能優勢。
val df = sqlSession.read.option("multiline", "true").json(filePath)
import sqlSession.implicits._
val ds: Dataset[Emp] = df.as[Emp]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.