hive下的文本解析(持续更新)

url解析

url结构

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:信息片断字符串,也称为锚点。用于指定网络资源中的片断。

hive下的解析

使用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解析

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')

你可能感兴趣的:(hive下的文本解析(持续更新))