Spark学习笔记(六)
来源:互联网 发布:5类网络端口怎么接 编辑:程序博客网 时间:2024/06/10 03:49
Json-SparkSQL
JSON的流行
特点:简单,重点内容紧凑,易于阅读
- 灵活的模式
- 每个JSON对象都是自描述的
- Web服务之间的的数据交换格式
- 例如:Facebook和Twitter API
- 高度用于移动和Web应用程序开发
- 大量的JSON数据集
JSON的灵活性使得生成JSON数据集变得容易,But,JSON的灵活性使得难以分析JSON数据集。
Difference:
- 定义模式的难度
- 复杂结构
- 非均匀模式
- 多类型字段
- 维护模式的难度
模式的频繁更改(例如,应用程序已经
进化)访问JSON数据集中的字段时遇到问题
- 许多嵌套结构
- 复杂结构
现有方法
ETL
- 优点:易于访问字段
- 缺点:(1)定义和维护模式和(2)ETL过程可能需要很长时间
自定义JSON SerDes
- 优点:(1)可以处理新鲜数据,(2)易于访问字段
- 缺点:定义模式
将JSON对象存储在LOB列中
- 优点:(1)可以处理新鲜数据和(2)读取模式
- 缺点:查询中需要很多UDF
An example of using UDFs
{"name":"Yin","age":null,"address":{"city":"Columbus","state":"Ohio"}}
Goal:
SELECT name, age, address.city, address.state FROM jsonTable
With UDFs:
SELECT v1.name,v1.age,v2.city,v2.stateFROM jsonTable jtLATERAL VIEW json_tuple(jt.json, 'name','age','address')v1as name,age,address LATERAL VIEW json_tuple(v1.address,'city','state')v2 as city,state;
JSON support in Spark
无强制ETL处理、自动推断模式、无需使用UDF和容易写查询
实例分析
步骤1:
加载数据集
第2步:
将数据集注册为表开始处理数据集:(以自然的方式编写您的查询,而不使用UDF)
接口:
//data.json (text file)(一行一个对象)
sqlContext.jsonFile(“data.json”)
//data:RDD[String](一个记录一个对象)
sqlContext.jsonRDD(data)
json串的所有可能的类型:
解决类型冲突(原始类型)
- 扩大类型:两种数字类型之间的冲突
NULL => INT => LONG => DOUBLE => DECIMAL
- 下转到字符串
- 字符串类型和数字类型之间的冲突
- 字符串类型和布尔类型之间的冲突
- 布尔类型和数字类型之间的冲突
age被提升为数值;当我们不能 提升置为null
0 0
- Spark学习笔记(六)
- spark学习笔记六:Spark Streaming
- 大数据学习笔记(六)-Spark环境配置
- 大数据学习笔记(六)-Spark的RDD
- spark机器学习笔记:(六)用Spark Python构建回归模型
- spark机器学习笔记:(六)用Spark Python构建回归模型
- Spark学习六:spark streaming
- 学习笔记(六)
- 学习笔记(六)
- Apache Spark MLlib学习笔记(六)MLlib决策树类算法源码解析 2
- Spark学习笔记(一)--Spark架构
- 【spark 学习笔记】Spark学习笔记精华(1)
- Spark学习笔记(二)
- Spark学习笔记(三)
- Spark学习笔记(四)
- Spark学习笔记(五)
- Spark学习笔记(七)
- Spark学习笔记(八)
- 线程池ThreadPoolExecutor使用简介
- ElasticSearch格式化管道聚合结果
- ActiveMQ 5.13 selector 不工作
- 50道经典Java逻辑编程题
- 央视网、新华网、中国网、中国青年网、大洋网等媒体报道【汪国新委员:向世界讲述中国故事需要创新载体】
- Spark学习笔记(六)
- 影像分割(grabCut)
- UNION
- Matlab 图像处理 形态学 腐蚀 膨胀 开闭运算 连通分量
- 安卓用户头像设置
- Golang数字类型
- eclipse如何修改dynamic web module version
- IndexProvider
- Nginx + 阿里云SSL + tomcat 实现https访问代理