[SCALA] 어떻게 스파크에 dataframe에 JSON 문자열을 변환하는
SCALA어떻게 스파크에 dataframe에 JSON 문자열을 변환하는
나는 불꽃에 dataframe에 아래 문자열 변수를 변환 할.
val jsonStr = "{ "metadata": { "key": 84896, "value": 54 }}"
내가 JSON 파일에서 dataframe을 만드는 방법을 알고있다.
sqlContext.read.json("file.json")
하지만 문자열 변수에서 dataframe를 생성하는 방법을 모르겠어요.
어떻게 dataframe에 JSON 문자열 변수를 변환 할 수 있습니다.
해결법
-
==============================
1.2.2 스파크 :
2.2 스파크 :
import spark.implicits._ val jsonStr = """{ "metadata": { "key": 84896, "value": 54 }}""" val df = spark.read.json(Seq(jsonStr).toDS)
스파크 2.1.x의 경우 :
val events = sc.parallelize("""{"action":"create","timestamp":"2016-01-07T00:01:17Z"}""" :: Nil) val df = sqlContext.read.json(events)
이전 버전의 경우 :
val jsonStr = """{ "metadata": { "key": 84896, "value": 54 }}""" val rdd = sc.parallelize(Seq(jsonStr)) val df = sqlContext.read.json(rdd)
-
==============================
2.
val jsonStr = """{ "metadata": { "key": 84896, "value": 54 }}""" import spark.implicits._ // spark is your SparkSession object val df = spark.read.json(Seq(jsonStr).toDS)
-
==============================
3.스파크에 DataFrame로 JSON 문자열의 목록을 변환하려면 2.2 =>
스파크에 DataFrame로 JSON 문자열의 목록을 변환하려면 2.2 =>
val spark = SparkSession .builder() .master("local") .appName("Test") .getOrCreate() var strList = List.empty[String] var jsonString1 = """{"ID" : "111","NAME":"Arkay","LOC":"Pune"}""" var jsonString2 = """{"ID" : "222","NAME":"DineshS","LOC":"PCMC"}""" strList = strList :+ jsonString1 strList = strList :+ jsonString2 val rddData = spark.sparkContext.parallelize(strList) resultDF = spark.read.json(rddData) resultDF.show()
결과:
+---+----+-------+ | ID| LOC| NAME| +---+----+-------+ |111|Pune| Arkay| |222|PCMC|DineshS| +---+----+-------+
-
==============================
4.여기에 어떻게 자바 (스파크 2.2)에 Dataframe에 JSON 문자열을 변환하는 예입니다 :
여기에 어떻게 자바 (스파크 2.2)에 Dataframe에 JSON 문자열을 변환하는 예입니다 :
String str1 = "{\"_id\":\"123\",\"ITEM\":\"Item 1\",\"CUSTOMER\":\"Billy\",\"AMOUNT\":285.2}"; String str2 = "{\"_id\":\"124\",\"ITEM\":\"Item 2\",\"CUSTOMER\":\"Sam\",\"AMOUNT\":245.85}"; List<String> jsonList = new ArrayList<>(); jsonList.add(str1); jsonList.add(str2); SparkContext sparkContext = new SparkContext(new SparkConf() .setAppName("myApp").setMaster("local")); JavaSparkContext javaSparkContext = new JavaSparkContext(sparkContext); SQLContext sqlContext = new SQLContext(sparkContext); JavaRDD<String> javaRdd = javaSparkContext.parallelize(jsonList); Dataset<Row> data = sqlContext.read().json(javaRdd); data.show();
여기에 결과는 다음과 같습니다
+------+--------+------+---+ |AMOUNT|CUSTOMER| ITEM|_id| +------+--------+------+---+ | 285.2| Billy|Item 1|123| |245.85| Sam|Item 2|124| +------+--------+------+---+
-
==============================
5.
simple_json = '{"results":[{"a":1,"b":2,"c":"name"},{"a":2,"b":5,"c":"foo"}]}' rddjson = sc.parallelize([simple_json]) df = sqlContext.read.json(rddjson)
대답에 대한 참조는 https://stackoverflow.com/a/49399359/2187751입니다
-
==============================
6.https://spark.apache.org/docs/latest/sql-data-sources-json.html : 당신은 지금 직접 데이터 집합 [문자열]에서 JSON 읽을 수 있습니다
https://spark.apache.org/docs/latest/sql-data-sources-json.html : 당신은 지금 직접 데이터 집합 [문자열]에서 JSON 읽을 수 있습니다
val otherPeopleDataset = spark.createDataset( """{"name":"Yin","address":{"city":"Columbus","state":"Ohio"}}""" :: Nil) val otherPeople = spark.read.json(otherPeopleDataset) otherPeople.show() // +---------------+----+ // | address|name| // +---------------+----+ // |[Columbus,Ohio]| Yin| // +---------------+----+
from https://stackoverflow.com/questions/38271611/how-to-convert-json-string-to-dataframe-on-spark by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 빈 / 널 필드 값 새로운 Dataframe 만들기 (0) | 2019.11.09 |
---|---|
[SCALA] 스칼라에서 익명 함수에서 매개 변수 전에 암시 적 키워드 (0) | 2019.11.09 |
[SCALA] 어떻게 반사를 사용하여 스칼라 객체 메소드를 호출합니까? (0) | 2019.11.08 |
[SCALA] 스칼라의지도를 반전하는 우아한 방법 (0) | 2019.11.08 |
[SCALA] GZIP 형식은 스파크에서 지원됩니까? (0) | 2019.11.08 |