源数据样式
{"name":"Michael","sex":1}
{"name":"Andy", "age":30,"sex":2}
{"name":"Justin", "age":19}
解析后为map键值对
代码如下:
1. pom.xml 引入依赖:
/*for json*/ <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
ps:注意最后的 version 参数可能会变化,输入1.2. 然后系统会自动提示可用版本
编写完pom.xml文件后,Ctrl + shift + o 会自动下载依赖
2.Scala代码如下:
import org.apache.spark.{SparkConf, SparkContext} import com.alibaba.fastjson.JSON object JsonTest { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local[*]").setAppName("jsonTestApp") val sc = new SparkContext(conf) //读取JSON数据文件 val sourceText = sc.textFile("" + "file:///D:\\doc\\spark\\input/people.json") //把使用parseObject 把JSON转为 JSON对象,选传参为 String text 的 val rdd2 = sourceText.map(s => JSON.parseObject(s.toString)) //获取JSON对象的key value val rdd3 = rdd2.map(item => ((item.put("name", ""),(item.put("age", "")),(item.put("sex",""))))) rdd3.foreach(println(_)) } }
输出: