Spark学习笔记(六)

    xiaoxiao2021-03-25  114

    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.state FROM jsonTable jt LATERAL 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


    转载请注明原文地址: https://ju.6miu.com/read-10599.html

    最新回复(0)