URL:统一资源定位符 (Uniform Resource Locator, URL)。
完整的URL由这几个部分构成:scheme://host:port/path?query#hash:
scheme:通信协议,常用的有http、https、ftp、mailto等。
host:主机域名或IP地址。
port:端口号,可选。省略时使用协议的默认端口,如http默认端口为80。
path:路径由零或多个"/“符号隔开的字符串组成,一般用来表示主机上的一个目录或文件地址。
query:查询,可选。用于传递参数,可有多个参数,用”&“符号隔开,每个参数的名和值用”="符号隔开。
hash:信息片断字符串,也称为锚点。用于指定网络资源中的片断。
使用parse_url函数可以解析url的每个部分,例如:
parse_url('https://editor.csdn.net/md?articleId=103947306', 'QUERY')
获取目标参数:
parse_url('https://editor.csdn.net/md?articleId=103947306', 'QUERY','articleId')
解析url中的西欧字符:
这里可以用reflect函数,映射java的内置函数"java.net.URLDecoder":
reflect("java.net.URLDecoder","decode",url,"UTE-8")
将url的query,转为map的结构:
str_to_map(string,'&','=')
两刀切,先切&,再切=
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
在hive中,可以使用get_json_object方法来获取json中的元素
1.单层获取
get_json_object(json,'$.name')
result : 中国
2.多层获取
其中嵌套了数组可以直接用[]引用
SELECT get_json_object('json','$.province[0].name')
result : 黑龙江
使用get_tuple
使用get_tuple一次获取多个json字段*
但是不能嵌套,也不能使用数组
get_json_object('json','name','province')