簡體   English   中英

Spark-Scala-如何將DataFrame轉換為自定義對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM