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文件而是一个文件夹,我们打开文件夹,结构如下

我们保存错了嘛?没有,这时正常的。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

示例:

 

文件内容

我们看到每个{...}中为一个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运行程序

4.查看结果

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

【spark】文件读写和JSON数据解析的更多相关文章

  1. Unity3d-XML文件数据解析&JSON数据解析

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

  2. 大数据学习day39----数据仓库02------1. log4j 2. 父子maven工程(子spring项目的创建)3.项目开发(埋点日志预处理-json数据解析、清洗过滤、数据集成实现、uid回补)

    1. log4j(具体见log4j文档) log4j是一个java系统中用于输出日志信息的工具.log4j可以将日志定义成多种级别:ERROR  /  WARN  /  INFO  /  DEBUG ...

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

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

  4. iOS - JSON 数据解析

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

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

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

  6. Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...

  7. Android学习笔记之JSON数据解析

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

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

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

  9. 浅谈JSON数据解析方法

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

随机推荐

  1. pip 查看已安装模块、卸载指定模块、安装指定版本模块

    操作背景 最近使用 pandas+numpy+plotly 画heatmap(热力图),来处理股票数据,语法.步骤都没问题,但到画图那一步老是报错,且 plotly 版本为3.1.0: 最后找到原因, ...

  2. Flask(5)- Flask-Session组件、WTForms组件、数据库连接池(POOL)

    一.Flask-Session 我们使用过flask内置的session,知道它是把session存放在浏览器,即客户端.今天要学习的flask-session是flask的第三方组件,看一下它和fl ...

  3. IntelliJ创建main函数、for循环,System.out.println()等快捷建(转载)

    在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了. psvm 也就是public static void main的首字母. 依次还有在方法体内键入f ...

  4. C#__ 模拟鼠标单击事件

    首先要用到的引用有 [DllImport("User32")] public extern static void mouse_event(int dwFlags, int dx, ...

  5. 爬虫任务二:爬取(用到htmlunit和jsoup)通过百度搜索引擎关键字搜取到的新闻标题和url,并保存在本地文件中(主体借鉴了网上的资料)

    采用maven工程,免着到处找依赖jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&quo ...

  6. python16_day16【Django_ORM、模板】

    一.ORM 1.MySQL配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你 ...

  7. java二叉排序树

    二叉排序树又称二叉查找树.它或者是一颗空树,或者是具有如下性质的二叉树: 1.如果左子树不空,那么左子树上的所有节点均小于它的根节点的值: 2.如果右子树不空,那么右子树上的所有节点均大于它的根节点的 ...

  8. Educational Codeforces Round 11B. Seating On Bus 模拟

    地址:http://codeforces.com/contest/660/problem/B 题目: B. Seating On Bus time limit per test 1 second me ...

  9. 【Github教程】史上最全github使用方法:github入门到精通(转自eoeandroid.com)

    本文来源:http://www.eoeandroid.com/thread-274556-1-1.html 另附经典教程网址 :http://wuyuans.com/2012/05/github-si ...

  10. uiautomator--图像处理

    一.图像处理在自动化中使用场景 1)效果类截图  图像处理技术在自动化的场景中很容易使用到.自动化不是万能的,有时候效果类的是无法进行验证的,但是效果类一般会有图像显示,我们可以通过截图对比实现. 2 ...