안녕하세요. 위기의코딩맨입니다.
오늘은 스ㅏ크 2.1.0 이후 버전부터 to_json(), from_json()을 이용하여
Column에서 json 문자열로 처리할 수 있도록 되었습니다.
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif)
[ to_json() ]
scala> val r1 = ("S2","note",20,2000)
scala> val r2 = ("S2","bag",10,5000)
scala> val df = List(r1,r2).toDF("store_nm","prod_nm","amount", "price")
scala> df.show
+--------+-------+------+-----+
|store_nm|prod_nm|amount|price|
+--------+-------+------+-----+
| S2| note| 20| 2000|
| S2| bag| 10| 5000|
+--------+-------+------+-----+
scala> df.select(to_json(struct('store_nm,'prod_nm,'amount,'price))as("value")).show(false)
+-----------------------------------------------------------+
|value |
+-----------------------------------------------------------+
|{"store_nm":"S2","prod_nm":"note","amount":20,"price":2000}|
|{"store_nm":"S2","prod_nm":"bag","amount":10,"price":5000} |
+-----------------------------------------------------------+
예제를 살펴보면 store_nm, prod_nm, amount. price를 만들고 df안에 해당 값들을 넣어주었습니다.
그리고 to_json()을 이용하여 해당 Column들을 json형태로 변환하여 결과 값을 출력했습니다.
Daraframe에서 Columns을 json 문자열로 변환하는 기본적인 방법은 strut()를 사용하는 것이며
functions object에서 제공하는 메서드입니다.
[ from_json() ]
반대로 json 문자열 형태를 Column으로 변경하는 방법은 from_json()을 사용하면됩니다.
scala> val v1 = """{store_nm":"S2","prod_nm":"note","amount":20,"price":2000}"""
scala> val v2 = """{store_nm":"S2","prod_nm":"bag","amount":10,"price":5000}"""
scala> val chema = new StructType().
| add("store_nm", StringType, false).
| add("prod_nm", StringType, false).
| add("amount", IntegerType, false).
| add("price", IntegerType, false)
scala> val options = Map("multiLine" -> "false")
scala> val df = List(v1, v2).toDF("value")
scala> df.select(from_json(' value, schema, options) as "value").
| select($"value.store_nm", $"value.prod_nm",
| $"value.amout", $"value.price").
| show(false)
+--------+-------+------+-----+
|store_nm|prod_nm|amount|price|
+--------+-------+------+-----+
| S2| note| 20| 2000|
| S2| bag| 10| 5000|
+--------+-------+------+-----+
출력 값을 확인해보면 json문자열을 struct Type의 Column으로 변환한 것입니다.
select($"value.store_nm"..) 방식으로 데이터를 조회합니다.
오늘은 Column 형태의 데이터를 json형태로 변환
반대로 json형태의 데이터를 Column형태로 변환하는 장업을 진행해보았습니다.
데이터를 주고 받을 때 json형태로 주고 받는 상황이 많으므로 참고해야 겠습니다
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif)
'Spark' 카테고리의 다른 글
[We-Co] Structured Streaming - Spark (0) | 2021.09.22 |
---|---|
[We-Co] Spark Streaming (0) | 2021.09.16 |
[We-Co] Spark SQL API 메서드(3) (0) | 2021.09.14 |
[We-Co] Spark SQL API 메서드(2) (0) | 2021.09.13 |
[We-Co] Spark SQL API 메서드(1) (0) | 2021.09.12 |