国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

spark-sql處理json字符串的常用函數

這篇具有很好參考價值的文章主要介紹了spark-sql處理json字符串的常用函數。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

整理了spark-sql處理json字符串的幾個函數:
1?get_json_object 解析不含數組的 json
?
2 from_json? 解析json

3 schema_of_json?提供生成json格式的方法

4 explode? ?把JSONArray轉為多行

get_json_object

get_json_object(string json_string, string path) :適合最外層為{}的json解析。
?第一個參數是json對象變量,也就是含json的字段 。第二個參數使用? $?作為json變量標識 定位數據位置,按jsonpath的規(guī)則
簡單的例子:
select get_json_object('{"drink":"Tea","fruit":"Apple"}', '$.drink') as text
text
Tea

from_json

from_json(column, schema_string):用schema_string的格式,來解析column。 用schema_string的格式可以用schema_of_json獲取。
簡單例子:
select from_json('[{"text":"Tea"},{"text":"Apple"}]', 'ARRAY<STRUCT<text: STRING>>');
jsontostructs([{"text":"Tea"},{"text":"Apple"}])
[{"text":"Tea"},{"text":"Apple"}]
進階例子:
select from_json('[{"text":"Tea"},{"text":"Apple"}]', 'ARRAY<STRUCT<text: STRING>>')[0]['text'] as q;
q
tea

schema_of_json

schema_of_json(s):解析字符串s,返回描述json格式的字符串。
字典:STRUCT,字典里是一些Key-Value鍵值對。
列表:ARRAY,列表里是一些相同的元素。
例子1? array:
select schema_of_json('[{"text":"a"},{"b":"a"}, {"c":1}]')

結果:
ARRAY<STRUCT<`b`: STRING, `c`: BIGINT, `text`: STRING>>
例子2? 復雜的json:
select schema_of_json('{"vid":391420754,"aid":9701587,"isreply":"0","ispic":"0","fromPage":"2","site":"2","isreplysp":"2","isat":"0","isemoji":"0","loc":"1","page":"1","track_info":""}')

結果:

struct<aid:bigint,fromPage:string,isat:string,isemoji:string,ispic:string,isreply:string,isreplysp:string,loc:string,page:string,site:string,track_info:null,vid:bigint>
例子3? 混合:
select schema_of_json('{"text":["a", 2, "b", "a"],"b":1.2, "c":1}')

結果:
STRUCT<`b`: DOUBLE, `c`: BIGINT, `text`: ARRAY<STRING>>
對于復雜的字符串,如果python json.loads報錯,schema_of_json可能報錯。
批注 1:
語句里有什么,就會返回什么。但一般用json形式的字段,都是擴展字段,里面的屬性個數不是固定的。我們可以從生成的結果里面篩選一下,只取我們需要的字段。比如上面的例子2里的,就只?。? struct<aid:bigint>
select from_json('{"vid":391420754,"aid":9701587,"page":"1"}' , 'struct<aid:bigint>')

結果:
{"aid":9701587}
批注 2:
如果我們不需要key的話,就直接帶上key
select from_json('{"vid":391420754,"aid":9701587,"page":"1"}' , 'struct<aid:bigint>')['aid']

結果:
aid
9701587

explode

explode(from_json(...)):將from_json的內容展成多行(應用于ARRAY,每個元素1行)

例子:

select explode(from_json('[{"text":"Tea"},{"text":"Apple"}]', 'ARRAY<STRUCT<text: STRING>>')) as q;
q
----
{"text":"Tea"}
{"text":"Apple"}
SELECT r1.col.Attr_INT, r1.col.ATTR_DATE, r1.col.ATTR_DOUBLE FROM (SELECT explode(r.json) AS col FROM (SELECT from_json('[{"Attr_INT":1, "ATTR_DOUBLE":10.201, "ATTR_DATE": "2021-01-01"},{"Attr_INT":1, "ATTR_DOUBLE":10.201, "ATTR_DATE": "2021-02-01"}]','array<struct<ATTR_DATE:string,ATTR_DOUBLE:double,Attr_INT:bigint>>') AS json) r) AS r1;
Attr_INT	ATTR_DATE	ATTR_DOUBLE
1	2021-01-01	10.201
1	2021-02-01	10.201
select q.text from (select explode(from_json('[{"text":"Tea"},{"text":"Apple"}]', 'ARRAY<STRUCT<text: STRING>>')) as q);
text
----
Tea
Apple

參考

spark-sql處理json字符串的函數 - 知乎文章來源地址http://www.zghlxwxcb.cn/news/detail-405037.html

到了這里,關于spark-sql處理json字符串的常用函數的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JSON對象字符串在C#中進行像sql一樣動態(tài)查詢

    在C#中,我們可以使用多種方法來根據條件動態(tài)查詢JSON對象字符串數據,類似于SQL語句查詢。 使用JObject JObject是Json.NET中的一個類,可以方便地操作JSON對象。通過JObject,我們可以像使用SQL一樣使用LINQ查詢語句來查詢JSON對象。 示例代碼: 使用JsonPath JsonPath是一種基于JSON對象

    2023年04月14日
    瀏覽(23)
  • spark SQL 怎么將一個時間戳字符串轉換成hive支持的時間日期類型?

    在 Spark SQL 中,可以使用 to_timestamp 函數將一個時間戳字符串轉換成 Hive 支持的時間日期類型。這個函數的語法如下: 其中,timestampStr 表示要轉換的時間戳字符串,format 表示時間戳字符串的格式,格式必須與時間戳字符串的實際格式相匹配。如果不指定格式,Spark 會使用默認

    2024年02月11日
    瀏覽(51)
  • SQL常用替換字符串值的5種方法

    sql中的替換分為三種:1、查詢替換;2、更新替換;3新增替換; 下面5個方法函數主要用于實現查詢替換,當然update更新也是同樣道理 常用替換函數???????? ??1、COALESCE() 2、decode()? ?3、NVL() 4、 replace() ?5、 case when

    2024年02月16日
    瀏覽(20)
  • 常用字符串處理方法匯總--Pandas

    常用字符串處理方法匯總--Pandas

    字符串處理只能在Series上進行,不可以在DataFrame上操作,只能對字符串進行處理,不能對整數、日期進行處理 1.1.1 函數功能 統(tǒng)計Series中每個元素中包含pat的次數 1.1.2 函數語法 1.1.3 函數參數 參數 含義 pat 表達式 1.2.1 函數功能 統(tǒng)計Series中每個元素的長度 1.2.2 函數語法 2.1.1 函

    2024年02月12日
    瀏覽(25)
  • javascript中字符串處理,常用的方法匯總

    javascript中字符串處理,常用的方法匯總

    ?? 歡迎大家來到景天科技苑?? ???? 養(yǎng)成好習慣,先贊后看哦~???? 所屬專欄: 前端泛海 景天的主頁: 景天科技苑 點贊收藏關注不迷路哦,有需要時直接回來直接用。 雖然 JavaScript 有很多用處,但是處理字符串是其中最流行的一個。下面讓我們深入地分析一下使用

    2024年03月12日
    瀏覽(100)
  • # ABAP SQL 字符串處理-CONCAT&CAST

    # ABAP SQL 字符串處理-CONCAT&CAST

    經常我都要在ABAP的sql語句中對字符串進行處理,現在就總結一下可以用到的方法 在SQL語句中,有時候會有需要拼接字段或者是截取字段 在拼接之前: 運行結果 第一種:concat(A, 字段) as 別名 ----- A 可以為自定義字段 第二種:(C B ) AS 別名 ---- 注意,B與C都是需要為char類型

    2024年04月16日
    瀏覽(26)
  • 選讀SQL經典實例筆記21_字符串處理
  • SQL Server日期時間字符串的處理和轉換

    在SQL Server中,您可以使用T-SQL函數進行日期時間字符串的處理和轉換。要判斷一個日期字符串是否包含時間信息,可以使用T-SQL內置的函數CONVERT和TRY_CONVERT,并指定時間格式。 例如,假設有一個名為date_string的日期字符串,您可以使用以下代碼來判斷它是否包含時間信息: 如

    2024年02月16日
    瀏覽(23)
  • 在SQL中,可以使用不同的函數來轉換字符串日期格式。以下是一些常用的函數:

    1. STR_TO_DATE(): 將字符串轉換為日期格式。它接受兩個參數:要轉換的字符串和日期格式。 示例: 這將把字符串 ‘2023-07-04’ 轉換為日期格式,并返回結果作為 converted_date。 2. CAST(): 將字符串轉換為日期格式。它接受兩個參數:要轉換的字符串和目標數據類型。 示例: 這將把

    2024年02月04日
    瀏覽(26)
  • 【手寫數據庫toadb】SQL字符串如何被數據庫認識? 詞法語法分析基礎原理,常用工具

    ? 專欄內容 : 手寫數據庫toadb 本專欄主要介紹如何從零開發(fā),開發(fā)的步驟,以及開發(fā)過程中的涉及的原理,遇到的問題等,讓大家能跟上并且可以一起開發(fā),讓每個需要的人成為參與者。 本專欄會定期更新,對應的代碼也會定期更新,每個階段的代碼會打上tag,方便階段學

    2024年02月08日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包