spark中读取json_【spark】文件读写和JSON数据解析

1.读文件

通过 sc.textFile(“file://")方法来读取文件到rdd中。

val lines = sc.textFile("file://")//文件地址或者HDFS文件路径

本地地址

"file:///home/hadoop/spark-1.6.0-bin-hadoop2.6/examples/src/main/resources/people.json"

HDFS文件地址

"hdfs://112.74.21.122:9000/user/hive/warehouse/hive_test"

2.保存文件

通过sc.saveAsTextFile("file://")把 rdd 内容保存到文件

rdd.saveAsTextFile("file:///home/writeout.txt");//把rdd写入/home/writeout.txt

但是我们打开/home文件夹,发现writeout并不是txt文件而是一个文件夹,我们打开文件夹,结构如下

21940f8b1c35a11b4cea37285bf184c7.png

我们保存错了嘛?没有,这时正常的。part-00000代表的是分区,如果有多个分区,会有多个part-xxxxxx的文件。

如果我们要再次读取这个保存的文件并不需要一个一个分区读取,直接读取就可以了,spark会自动加载所有分区数据。

val rdd = sc.textFile("file:///home/writeout/part-00000");//我们并不用这样一个一个读取

val rdd = sc.textFile("file:///home/writeout.txt");//直接这样读取,就会自动把所有分区数据加载到rdd中

3.JSON数据解析

(1)读取JSON格式文件

直接用sc.textFile(“file://") 来读取.json文件即可

(2)JSON

Scala中有一个自带的JSON库 scala.util.parsing.json.JSON  可以实现对JSON数据解析。

通过调用 JSON.parseFull(jsonString:String) 函数对输入的JSON字符串进行解析。

如果解析成功则返回一个 Some( map:Map[String,Any] ) ,失败则返回None

示例:

72ac3d06b2897573c56c9c0a66a52c81.png

文件内容

9a696e754ccdaf439b6a66d81adc61e3.png

我们看到每个{...}中为一个json格式的数据,一个json文件包含若干个json格式的数据。

我们解析这个json文件的内容

1.编写程序

import org.apache.spark._

import scala.util.parsing.json.JSON

object JSONApp {

def main(args:Array[String]): Unit ={

//初始化配置:设置主机名和程序主类的名字

val conf = new SparkConf().setMaster("local").setAppName("JSONApp");

//通过conf来创建sparkcontext

val sc = new SparkContext(conf);

val inputFile = "file:///usr/local/spark/examples/src/main/resources/people.json"//读取json文件

val jsonStr = sc.textFile(inputFile);

val result = jsonStr.map(s => JSON.parseFull(s));//逐个JSON字符串解析

result.foreach(

{

r => r match {

case Some(map:Map[String,Any]) => println(map)

case None => println("parsing failed!")

case other => println("unknown data structure" + other)

}

}

);

}

}

2.将整个程序打包成jar包

3.通过spark-submit运行程序

6d7c5050fc234754e2c6ccd1098c7274.png

4.查看结果

运行程序后,可以在屏幕上看到大量的输出信息,找到如下的信息,解析成功。

67fee86c86870c0097aaf76dbdc9942d.png

Unity3d-XML文件数据解析&;amp;JSON数据解析

1.XML文件数据解析:(首先须要导入XMLParser解析器,The latest released download from:http://dev.grumpyferret.com/unity/ ...

JSON数据解析 基础知识及链接收集

JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

iOS - JSON 数据解析

iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

iOS开发笔记3:XML/JSON数据解析

这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSeri ...

Android学习笔记之JSON数据解析

转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

[开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...

浅谈JSON数据解析方法

JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...

JSON数据解析(转)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

随机推荐

关于IE6的PNG图像透明使用AlphaImageLoader的缺点

PNG32的alpha透明效果在IE6下会出现bug,出现灰色背景.而目前的解决方案就是 IE提供的滤镜.需要注意的是滤镜并不是对原图片进行修改,而是对相应的html元素进行 修改.所以在一个html ...

Flex box弹性布局 及 响应式前端设计的优化

Flex box弹性布局 Flex box是CSS3新添加的一种模型属性,它的出现有力的打破了我们常常使用的浮动布局.实现垂直等高.水平均分.按比例划分,可以实现许多我们之前做不到的自适应布局.如果你 ...

oracle 查询当前库中所有表以及某表字段信息

select utc.COLUMN_ID,utc.TABLE_NAME,utc.COLUMN_NAME,utc.DATA_TYPE||utc.DATA_LENGTH,utc.DATA_DEFAULT, ...

学习VirtualEnv和Nginx+uwsgi用于django项目部署

以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...

Docker - Failed to connect to localhost port 4000: Connection refused

转载.翻译自 https://stackoverflow.com/questions/44014698/docker-failed-to-connect-to-localhost-port-4000- ...

ZOJ 2480 - Simplest Task in Windows

Simplest Task in Windows Time Limit: 2 Seconds      Memory Limit: 65536 KB A typical windows platfor ...

asp.netajax与jquery和bootstrap的无刷新完美实现

20190421asp.netajax与jquery和bootstrap的无刷新完美实现 设计代码和后台代码中重要部分加粗和深色以及字号加大. 设计前台代码:

04 python 初学(数据类型)

数据类型: 数字: 整数  int (integer) python3 已经不区分整型和长整型了,都叫整型 浮点型 float 复数 complex 布尔: True        False 字符串 ...

(网页)javascript小技巧(非常全)

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture();  event.srcE ...

js删除数组中元素的方法

一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...

你可能感兴趣的:(spark中读取json)