SparkSQL JSON数据操作(1.3->1.4)
1.用户自定义schema
data
json串格式如下:
{
"partner_code": "demo",
"app_name": "web",
"person_info": {
"name": "张三",
"age": 18
},
"items": [
{
"item_id": 1,
"item_name": "王家村",
"group": "group1"
},
{
"item_id": 2,
"item_name": "李家澡堂",
"item_detail": {
"platform_count": 2
},
"group": "group2"
}
]
}
spark1.3
在spark1.3我们是这样处理的
//定义schema
val struct =StructType(
StructField("partner_code", StringType, true) ::
StructField("app_name", StringType, true)::
StructField("person_info",MapType(StringType,StringType,true)) ::
StructField("items",ArrayType(MapType(StringType,StringType,true))) ::
Nil)
val data = sc.textFile("path/jsonFile")
val df = sqlContext.jsonRDD(data,struct)
df.printSchema
df.show
spark1.4
//定义schema
val struct =StructType(
StructField("partner_code", StringType, true) ::
StructField("app_name", StringType, true)::
StructField("person_info",MapType(StringType,StringType,true)) ::
StructField("items",ArrayType(MapType(StringType,StringType,true))) ::
Nil)
val df = sqlContext.read.schema(struct).json("path/jsonFile")
输出结果
//df.printSchema
root
|-- partner_code: string (nullable = true)
|-- app_name: string (nullable = true)
|-- person_info: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
|-- items: array (nullable = true)
| |-- element: map (containsNull = true)
| | |-- key: string
| | |-- value: string (valueContainsNull = true)
//df.show
+------------+--------+--------------------+--------------------+
|partner_code|app_name| person_info| items|
+------------+--------+--------------------+--------------------+
| demo| web|Map(name -> 张三, a...|List(Map(item_id ...|
+------------+--------+--------------------+--------------------+
系统自动生成schema
直接使用自带的解析会更方便,不过那样会产生大量的struct结构,同时如果结构复杂多变将会产生大量的空值。
//不需要定义schema,系统自动判断生成
val df = sqlContext.read.json("path/jsonFile")
df.printSchema
df.show
输出结果
//df.printSchema
root
|-- app_name: string (nullable = true)
|-- items: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- group: string (nullable = true)
| | |-- item_detail: struct (nullable = true)
| | | |-- platform_count: long (nullable = true)
| | |-- item_id: long (nullable = true)
| | |-- item_name: string (nullable = true)
|-- partner_code: string (nullable = true)
|-- person_info: struct (nullable = true)
| |-- age: long (nullable = true)
| |-- name: string (nullable = true)
//df.show
+--------+--------------------+------------+-----------+
|app_name| items|partner_code|person_info|
+--------+--------------------+------------+-----------+
| web|List([group1,null...| demo| [18,张三]|
+--------+--------------------+------------+-----------+
SparkSQL JSON数据操作(1.3->1.4)的更多相关文章
- python 发送json数据操作实例分析 - python
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...
- JSON 数据操作
2018,狗年.如果在你出生日期的年份上加12等于2018的话,私聊我,今年是你的本命年,你得发红包!!! 子(鼠).丑(牛).寅(虎).卯(兔).辰(龙).巳(蛇).午(马).未(羊).申(猴).酉 ...
- ajax 返回json数据操作
例子: $.ajax({ url: "<?=Url::toRoute('add-all-staff')?>", type: 'get', dataType: 'json ...
- python json 数据操作
python 有专门针对 json 操作的函数 #!/usr/bin/python3 import json mytest_js = { "a" : 1, "b" ...
- js常用JSON数据操作
JSON字符串: var str = '{"name": "jack", "age": 13}'; JSON对象: var obj = { ...
- json数据操作
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0 1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...
- js之操作JSON数据
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- js中如何操作json数据
一.要想熟练的操作json数据,就先要了解json数据的结构,json有两种结构:对象和数组. 1.对象 一个对象以“{”开始,“}”结束.每个“名称”后跟一个“:”:“‘名称/值’ 对”之间使用“, ...
随机推荐
- HTML5的新事件
HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击一个 HTML 元素时启动一段 JavaScript. HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击 ...
- 创建数据库指定路径sql
create database stuDB on primary -- 默认就属于primary文件组,可省略(/*--数据文件的具体描述--*/ name='stuDB_data', - ...
- ADO,OLEDB,ODBC,DAO的区别【转】
转载:http://blog.csdn.net/sunboy_2050/article/details/6624684 ODBC(Open Database Connectivity,开放数据库互连) ...
- c# 过滤字符串中的重复字符
有字符串"a,s,d,v,a,v",如果想去除其中重复的字符,怎么做? 下面是一个方法,用Hashtable来记录唯一字符,排除重复字符,仅供参考. 1.过滤方法: public ...
- dede完美分页样式
html <div class="dede_pages"> <ul class="pagelist"> ...
- JavaScript: JavaScript的简介和入门代码演示
1.Javascript的发展历史介绍: javascript是指的实在网页上编写的编程语言,其主要是控制器html的动态显示效果.HTMl能带来的只是一些基本的页面的风格,而要展示的漂亮使用CSS, ...
- delegate and event
事件是特殊的委托 委托:第一个方法注册用“=”,是赋值语法,因为要进行实例化,第二个方法注册则用的是“+=” 修饰符应该public的时候public,应该private的时候private 事件 ...
- git 入门 2
进入d盘,新建project文件, 右键,git bash here cd project 初始化 $ git init 克隆项目 $ git clone http://192.168.1.188:3 ...
- Qt4过渡至Qt5
技术在不断进步,新知识也理应不断学习!Qt5的发布带给我无尽的好奇心,然而,受项目影响,一直使用VS2008 + Qt4.8也未曾及时更新.这几天,果断装上VS2010 + Qt5.1,开始研究.Qt ...
- Ubuntu下如何将普通用户提升到root权限
在ubuntu的系统操作中,我们经常会使用到系统权限的,因为权限不足,导致在一些操作当中非常麻烦.要获取权限,最长使用的方法就是使用sudo指令,但是来回使用还是比较麻烦,有没有直接提升我们的用户权限 ...