a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > 文庫 > 正文

Spark SQL操作JSON字段的小技巧

2020-10-29 21:46:42
字體:
來源:轉載
供稿:網友

前言

介紹Spark SQL的JSON支持,這是我們在Databricks中開發的一個功能,可以在Spark中更容易查詢和創建JSON數據。隨著網絡和移動應用程序的普及,JSON已經成為Web服務API以及長期存儲的常用的交換格式。使用現有的工具,用戶通常會使用復雜的管道來在分析系統中讀取和寫入JSON數據集。在Apache Spark 1.1中發布Spark SQL的JSON支持,在Apache Spark 1.2中增強,極大地簡化了使用JSON數據的端到端體驗。

很多時候,比如用structure streaming消費kafka數據,默認可能是得到key,value字段,key是偏移量,value是一個byte數組。很可能value其實是一個Json字符串。這個時候我們該如何用SQL操作這個json里的東西呢?另外,如果我處理完的數據,我想寫入到kafka,但是我想把整條記錄作為json格式寫入到Kafka,又該怎么寫這個SQL呢?

get_json_object

第一個就是get_json_object,具體用法如下:

select get_json_object('{"k": "foo", "v": 1.0}','$.k') as k

需要給定get_json_object 一個json字段名(或者字符串),然后通過類似jsonPath的方式去拿具體的值。
這個方法其實有點麻煩,如果要提取里面的是個字段,我就要寫是個類似的東西,很復雜。

from_json

具體用法如下:

select a.k from (select from_json('{"k": "foo", "v": 1.0}','k STRING, v STRING',map("","")) as a)

這個方法可以給json定義一個Schema,這樣在使用時,就可以直接使用a.k這種方式了,會簡化很多。

to_json

該方法可以把對應字段轉化為json字符串,比如:

select to_json(struct(*)) AS value

可以把所有字段轉化為json字符串,然后表示成value字段,接著你就可以把value字段寫入Kafka了。是不是很簡單。

處理具有大量字段的JSON數據集

JSON數據通常是半結構化、非固定結構的。將來,我們將擴展Spark SQL對JSON支持,以處理數據集中的每個對象可能具有相當不同的結構的情況。例如,考慮使用JSON字段來保存表示HTTP標頭的鍵/值對的數據集。每個記錄可能會引入新的標題類型,并為每個記錄使用一個不同的列將產生一個非常寬的模式。我們計劃支持自動檢測這種情況,而是使用map類型。因此,每行可以包含Map,使得能夠查詢其鍵/值對。這樣,Spark SQL將處理具有更少結構的JSON數據集,推動了基于SQL的系統可以處理的那種查詢的邊界。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲视频在线观看一区二区三区 | 午夜视频网址 | 国产精品乱码一区二区三区 | 日一日干一干 | 亚洲精品一区中文字幕乱码 | 色婷婷综合久久久久中文一区二区 | 精品久久久久久久久久久久久久 | 亚洲免费在线视频 | 在线日韩视频 | 成人国产精品视频 | 夜夜视频| 日韩精品欧美在线 | 国产精品久久久久久妇女6080 | 国产蜜臀97一区二区三区 | 国产精品资源在线 | 国产在线视频在线 | 在线欧美视频 | 九月色综合 | 日本久久久亚洲精品 | 日本不卡精品 | 欧美日韩高清 | 不用播放器的免费av | 精品免费一区 | 成人久久18免费观看 | 日本高清h色视频在线观看 欧美成人精品一区二区三区 | 欧美中文在线 | 再深点灬舒服灬太大了添少妇视频 | 免费的av网站 | 91视频国内 | 成人黄色在线观看 | 99久久婷婷国产综合精品 | 人人射人人插 | 爱爱视频免费播放 | 久久久国产精品视频 | 一级片手机免费看 | 999久久久 | 亚洲一区中文字幕在线观看 | 91麻豆精品国产91久久久久久 | 欧美电影一区 | 精品99久久久久久 | 成人精品视频在线观看 |