如何自己做网站推广淘宝客,wordpress示例页面,wordpress 修改后台登陆名字,深圳建筑公司实力排名一、JSON 数据
JSON#xff08;JavaScript Object Notation#xff09;是一种轻量级的数据交换格式#xff0c;在不同的编程语言之间进行数据传输时非常通用和常用。JSON 格式简单直观#xff0c;易于阅读和编写#xff0c;并且可以被大多数编程语言轻松解析和生成。
1.…一、JSON 数据
JSONJavaScript Object Notation是一种轻量级的数据交换格式在不同的编程语言之间进行数据传输时非常通用和常用。JSON 格式简单直观易于阅读和编写并且可以被大多数编程语言轻松解析和生成。
1. JSON 特点
轻量级JSON 的格式简单数据量较小适合网络传输。可读性强JSON 使用键值对来表示数据非常直观易于人类阅读和编写。广泛支持几乎所有的编程语言如 JavaScript、Python、Java、C# 等都支持 JSON并且有内置或第三方库可以方便地解析和生成 JSON 数据。
2. JSON 的语法 对象由 {} 包围使用键值对表示数据键和值之间用冒号 : 分隔键值对之间用逗号 , 分隔。 {name: John Doe,age: 30,email: john.doeexample.com
}值的类型可以是字符串、数字、对象、数组、布尔值true/false或 null甚至可以继续嵌套json。 {string: hello,number: 123,object: {key: value},array: [1, 2, 3],boolean: true,null_value: null
}3. JSON 在 Hive 中的使用
在 Hive 中处理 JSON 数据非常常见可以使用 get_json_object() 等函数来解析和提取 JSON 数据中的信息。
get_json_object()
get_json_object() 函数用于从 JSON 字符串中提取指定路径的数据。
示例数据文件
假设有一个名为 users.json 的文件内容如下
1,{name: John, age: 30}
2,{name: Jane, age: 25}导入数据到 Hive 表
首先我们创建一个表 users 并将数据导入到该表中
-- 创建表
CREATE TABLE users (user_id INT,user_info STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ,;-- 加载数据
LOAD DATA LOCAL INPATH /path/to/users.json INTO TABLE users;然后使用 get_json_object() 从 JSON 字符串中提取用户的名称和年龄
SELECTuser_id,get_json_object(user_info, $.name) as name,get_json_object(user_info, $.age) as age
FROMusers;示例结果
user_idnameage1John302Jane25 二、HIVE的JSON 数据处理
在本案例中我们将介绍如何从JSON格式的数据中提取时间、城市和人名并将提取的数据进行进一步处理。
示例数据格式
数据表 yizu 中的 cot 字段示例
1 {time: 1672531199000, sex: male, searchValue: [{province: 广东, city: 深圳}, 张三]}
2 {time: 1672531199001, sex: female, searchValue: [{province: 北京, city: 北京}, 李四]}
3 {time: 1672531199002, sex: male, searchValue: [{province: 上海, city: 上海}, 王五]}
4 {time: 1672531199003, sex: female, searchValue: [{province: 江苏, city: 南京}, 赵六]}
5 {time: 1672531199004, sex: male, searchValue: [{province: 浙江, city: 杭州}, 孙七]}第一步提取数据
提取时间
SELECT FROM_UNIXTIME(FLOOR(CAST(get_json_object(cot, $.time) AS BIGINT)/1000)) AS time
FROM yizu;结果
---------------------
| time |
---------------------
| 2023-01-01 00:59:59 |
| 2023-01-01 01:00:00 |
| 2023-01-01 01:00:01 |
| 2023-01-01 01:00:02 |
| 2023-01-01 01:00:03 |
---------------------提取城市
SELECT get_json_object(cot, $.searchValue[0].city) AS city
FROM yizu;结果
--------
| city |
--------
| 深圳 |
| 北京 |
| 上海 |
| 南京 |
| 杭州 |
--------提取人名
SELECT get_json_object(cot, $.searchValue[1]) AS name
FROM yizu;结果
------
| name |
------
| 张三 |
| 李四 |
| 王五 |
| 赵六 |
| 孙七 |
------整合查询
SELECT FROM_UNIXTIME(FLOOR(CAST(get_json_object(cot, $.time) AS BIGINT)/1000)) AS time,get_json_object(cot, $.searchValue[0].city) AS city,get_json_object(cot, $.searchValue[1]) AS name
FROM yizu;结果
-----------------------------------
| time | city | name |
-----------------------------------
| 2023-01-01 00:59:59 | 深圳 | 张三 |
| 2023-01-01 01:00:00 | 北京 | 李四 |
| 2023-01-01 01:00:01 | 上海 | 王五 |
| 2023-01-01 01:00:02 | 南京 | 赵六 |
| 2023-01-01 01:00:03 | 杭州 | 孙七 |
-----------------------------------第二步数据处理
使用concat_ws将数据合并为字符串
SELECT concat_ws(,, FROM_UNIXTIME(FLOOR(CAST(get_json_object(cot, $.time) AS BIGINT)/1000)),get_json_object(cot, $.searchValue[0].city),get_json_object(cot, $.searchValue[1])) AS new_c
FROM yizu;结果
-----------------------
| new_c |
-----------------------
| 2023-01-01 00:59:59,深圳,张三 |
| 2023-01-01 01:00:00,北京,李四 |
| 2023-01-01 01:00:01,上海,王五 |
| 2023-01-01 01:00:02,南京,赵六 |
| 2023-01-01 01:00:03,杭州,孙七 |
-----------------------使用split将字符串切割为数组
SELECT split(concat_ws(,,FROM_UNIXTIME(FLOOR(CAST(get_json_object(cot, $.time) AS BIGINT)/1000)),get_json_object(cot, $.searchValue[0].city),get_json_object(cot, $.searchValue[1])), ,) AS new_c
FROM yizu;结果
------------------------------------------------
| new_c |
------------------------------------------------
| [2023-01-01 00:59:59, 深圳, 张三] |
| [2023-01-01 01:00:00, 北京, 李四] |
| [2023-01-01 01:00:01, 上海, 王五] |
| [2023-01-01 01:00:02, 南京, 赵六] |
| [2023-01-01 01:00:03, 杭州, 孙七] |
------------------------------------------------使用explode将数组转换为多行显示
SELECT id, c1
FROM (SELECT id,split(concat_ws(,,FROM_UNIXTIME(FLOOR(CAST(get_json_object(cot, $.time) AS BIGINT)/1000)),get_json_object(cot, $.searchValue[0].city),get_json_object(cot, $.searchValue[1])), ,) AS new_cFROM yizu
) a
LATERAL VIEW EXPLODE(new_c) lv AS c1;结果
-----------------------
| id | c1 |
-----------------------
| 1 | 2023-01-01 00:59:59|
| 1 | 深圳 |
| 1 | 张三 |
| 2 | 2023-01-01 01:00:00|
| 2 | 北京 |
| 2 | 李四 |
| 3 | 2023-01-01 01:00:01|
| 3 | 上海 |
| 3 | 王五 |
| 4 | 2023-01-01 01:00:02|
| 4 | 南京 |
| 4 | 赵六 |
| 5 | 2023-01-01 01:00:03|
| 5 | 杭州 |
| 5 | 孙七 |
-----------------------