spark 儲存json資料遇到問題——json4s使用(一)
spark 儲存json資料遇到問題——json4s使用(一)
在進行spark的學習過程中遇到了這樣的問題。
1、《O'REILLY Learning Spark》的書中說道能夠使用spark進行json 的讀寫,但是給出的例子使用的json轉換的jar包是jackson的,還需要再次進行引入。
2、能不能找到一個spark內部已經有的基於scala的json處理的jar包。
在檢視spark依賴的jar檔案時,找到了json4s這個jar包,很明顯就是使用scala的一個json轉換的jar包。下面就介紹一下如何使用,首先介紹的是如何通過json4s實現生成json,後面還會介紹如何通過json串轉換成物件。
好,下面上貨,主要參考的是json4s的官方文件,這是地址:https://github.com/json4s/json4s/。
import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.jackson.JsonMethods._
object JsonStudy {
def main(args: Array[String]): Unit = {
val a = parse(""" { "numbers" : [1, 2, 3, 4] } """)
println(a.toString)
val b = parse("""{"name":"Toy","price":35.35}""", useBigDecimalForDouble = true)
println(b.toString)
val c = List(1, 2, 3)
val d = compact(render(c))
println(d)
val e = ("name" -> "joe")
val f = compact((render(e)))
println(f)
val g = ("name" -> "joe") ~ ("age" -> 35)
val h = compact(render(g))
println(h)
val i = ("name" -> "joe") ~ ("age" -> Some(35))
val j = compact(render(i))
println(j)
val k = ("name" -> "joe") ~ ("age" -> (None: Option[Int]))
val l = compact(render(k))
println(l)
//定義json
println("===========================")
//推薦這種方式,因為可以用在使用map
val jsonobj = (
("name" -> "xiaoming") ~
("age" -> 12)
)
println(jsonobj)
println(compact(render(jsonobj)))
val jsonobjp = parse(
"""{
"name":"xiaogang",
"age":12
}""")
println(jsonobjp)
println(compact(render(jsonobjp)))
//通過類生成json
println("===========================")
case class Winner(id: Long, numbers: List[Int])
case class Lotto(id: Long, winningNumbers: List[Int], winners: List[Winner], drawDate: Option[java.util.Date])
val winners = List(Winner(23, List(2, 45, 34, 23, 3, 5)), Winner(54, List(52, 3, 12, 11, 18, 22)))
val lotto = Lotto(5, List(2, 45, 34, 23, 7, 5, 3), winners, None)
val json =
("lotto" ->
("lotto-id" -> lotto.id) ~
("winning-numbers" -> lotto.winningNumbers) ~
("draw-date" -> lotto.drawDate.map(_.toString)) ~
("winners" ->
lotto.winners.map { w =>
(("winner-id" -> w.id) ~
("numbers" -> w.numbers))
}))
println(compact(render(json)))
}
}
這裡轉換的過程已經很清楚了,不再做過多的贅述。
相關文章
- Spark SQL使用簡介(3)--載入和儲存資料SparkSQL
- 使用資料泵遷移遇到的問題
- django儲存資料到表時,遇到字符集問題--已解決Django
- 使用Spark載入資料到SQL Server列儲存表SparkSQLServer
- 資料庫mysql儲存遇到禁用怎麼辦?資料庫MySql
- 資料庫儲存生僻字存在的問題資料庫
- 【Spark篇】---Spark解決資料傾斜問題Spark
- Spark(16) -- 資料讀取與儲存的主要方式Spark
- spark學習筆記--資料讀取與儲存Spark筆記
- 記錄一次spark連線mysql遇到的問題SparkMySql
- Word文件儲存時常遇到的問題及其解決方
- JavaScript使用localStorage儲存資料JavaScript
- 企業不可忽視的資料儲存和資料安全問題!
- 一個儲存過程的問題!儲存過程
- Vector儲存物件的一個問題物件
- Spark in action on Kubernetes - 儲存篇(一)Spark
- spark處理json資料DemoSparkJSON
- Mybatis讀取和儲存json型別的資料MyBatisJSON型別
- 使用Room持久庫儲存資料OOM
- 大資料儲存:MongoDB實戰指南——常見問題解答大資料MongoDB
- 儲存過程問題。。儲存過程
- 資料儲存--檔案儲存
- 提交Spark作業遇到的NoSuchMethodError問題總結SparkError
- 資料標準化遇到的問題
- 大資料面試可能遇到的問題大資料面試
- 資料儲存
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 如何在MongoDB設計儲存你的資料(JSON化)?MongoDBJSON
- 智慧儲存市場調查:資料移動將成大問題
- 關於資料庫 Block 儲存細節問題的討論資料庫BloC
- 開發工具-scala處理json格式利器-json4sJSON
- 資料儲存(1):從資料儲存看人類文明-資料儲存器發展歷程
- 爬蟲系列:使用 MySQL 儲存資料爬蟲MySql
- 聊一聊Redis熱點key儲存問題Redis
- 儲存json檔案JSON
- 使用git遇到的問題Git
- ueditor使用遇到的問題
- js中的儲存問題JS