欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spark SQL操作JSON字段的小技巧

 更新時(shí)間:2018年04月25日 11:50:07   作者:祝威廉  
這篇文章主要給大家介紹了關(guān)于Spark SQL操作JSON字段的小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spark sql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

介紹Spark SQL的JSON支持,這是我們?cè)贒atabricks中開(kāi)發(fā)的一個(gè)功能,可以在Spark中更容易查詢和創(chuàng)建JSON數(shù)據(jù)。隨著網(wǎng)絡(luò)和移動(dòng)應(yīng)用程序的普及,JSON已經(jīng)成為Web服務(wù)API以及長(zhǎng)期存儲(chǔ)的常用的交換格式。使用現(xiàn)有的工具,用戶通常會(huì)使用復(fù)雜的管道來(lái)在分析系統(tǒng)中讀取和寫入JSON數(shù)據(jù)集。在Apache Spark 1.1中發(fā)布Spark SQL的JSON支持,在Apache Spark 1.2中增強(qiáng),極大地簡(jiǎn)化了使用JSON數(shù)據(jù)的端到端體驗(yàn)。

很多時(shí)候,比如用structure streaming消費(fèi)kafka數(shù)據(jù),默認(rèn)可能是得到key,value字段,key是偏移量,value是一個(gè)byte數(shù)組。很可能value其實(shí)是一個(gè)Json字符串。這個(gè)時(shí)候我們?cè)撊绾斡肧QL操作這個(gè)json里的東西呢?另外,如果我處理完的數(shù)據(jù),我想寫入到kafka,但是我想把整條記錄作為json格式寫入到Kafka,又該怎么寫這個(gè)SQL呢?

get_json_object

第一個(gè)就是get_json_object,具體用法如下:

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

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

from_json

具體用法如下:

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

這個(gè)方法可以給json定義一個(gè)Schema,這樣在使用時(shí),就可以直接使用a.k這種方式了,會(huì)簡(jiǎn)化很多。

to_json

該方法可以把對(duì)應(yīng)字段轉(zhuǎn)化為json字符串,比如:

select to_json(struct(*)) AS value

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

處理具有大量字段的JSON數(shù)據(jù)集

JSON數(shù)據(jù)通常是半結(jié)構(gòu)化、非固定結(jié)構(gòu)的。將來(lái),我們將擴(kuò)展Spark SQL對(duì)JSON支持,以處理數(shù)據(jù)集中的每個(gè)對(duì)象可能具有相當(dāng)不同的結(jié)構(gòu)的情況。例如,考慮使用JSON字段來(lái)保存表示HTTP標(biāo)頭的鍵/值對(duì)的數(shù)據(jù)集。每個(gè)記錄可能會(huì)引入新的標(biāo)題類型,并為每個(gè)記錄使用一個(gè)不同的列將產(chǎn)生一個(gè)非常寬的模式。我們計(jì)劃支持自動(dòng)檢測(cè)這種情況,而是使用map類型。因此,每行可以包含Map,使得能夠查詢其鍵/值對(duì)。這樣,Spark SQL將處理具有更少結(jié)構(gòu)的JSON數(shù)據(jù)集,推動(dòng)了基于SQL的系統(tǒng)可以處理的那種查詢的邊界。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 新推出的金融版eXtremeDB 6.0功能改進(jìn)預(yù)覽

    新推出的金融版eXtremeDB 6.0功能改進(jìn)預(yù)覽

    這篇文章主要介紹了新推出的金融版eXtremeDB 6.0功能改進(jìn)預(yù)覽,如運(yùn)用SQL, Python實(shí)現(xiàn)的基于矢量的統(tǒng)計(jì)功能、分布式的查詢處理、市場(chǎng)數(shù)據(jù)壓縮等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • 比較SQL Server與Oracle、DB2數(shù)據(jù)庫(kù)的一些知識(shí)

    比較SQL Server與Oracle、DB2數(shù)據(jù)庫(kù)的一些知識(shí)

    本文比較大型數(shù)據(jù)庫(kù)SQL Server與Oracle、DB2的一些不同應(yīng)用之處。對(duì)于以后開(kāi)發(fā)選擇什么樣的數(shù)據(jù)庫(kù)。
    2010-03-03
  • 數(shù)據(jù)計(jì)算中間件技術(shù)綜述

    數(shù)據(jù)計(jì)算中間件技術(shù)綜述

    這篇文章主要介紹了數(shù)據(jù)計(jì)算中間件技術(shù)綜述 ,傳統(tǒng)企業(yè)大數(shù)據(jù)架構(gòu)的問(wèn)題,通過(guò)一張圖就能看懂,感興趣的朋友跟隨小編一起通過(guò)本文學(xué)習(xí)吧
    2018-11-11
  • SQL的各種連接Join案例詳解

    SQL的各種連接Join案例詳解

    SQL JOIN 子句用于把來(lái)自兩個(gè)或多個(gè)表的行結(jié)合起來(lái),基于這些表之間的共同字段,下面就為大家分享一下
    2020-09-09
  • SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫(kù)

    SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫(kù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • sql注入報(bào)錯(cuò)之注入原理實(shí)例解析

    sql注入報(bào)錯(cuò)之注入原理實(shí)例解析

    所謂報(bào)錯(cuò)注入,就是通過(guò)運(yùn)行SQL查詢語(yǔ)句回顯查詢結(jié)果,下面這篇文章主要給大家介紹了關(guān)于sql注入報(bào)錯(cuò)之注入原理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 站內(nèi)群發(fā)消息三種不同用戶量的數(shù)據(jù)庫(kù)設(shè)計(jì)

    站內(nèi)群發(fā)消息三種不同用戶量的數(shù)據(jù)庫(kù)設(shè)計(jì)

    很多SNS網(wǎng)站和一部分CMS網(wǎng)站都廣泛地應(yīng)用了站內(nèi)信這一模塊,這個(gè)看似簡(jiǎn)單的東西其實(shí)背后隱藏著很多需要設(shè)計(jì)師重視的設(shè)計(jì)細(xì)節(jié),要做好這個(gè)“郵遞員”是很不容易的,本文講述站內(nèi)群發(fā)消息三種不同用戶量的數(shù)據(jù)庫(kù)設(shè)計(jì),逐漸設(shè)計(jì)一個(gè)百萬(wàn)級(jí)用戶量的站內(nèi)信群發(fā)數(shù)據(jù)庫(kù)
    2023-12-12
  • 關(guān)于hive中SQL的執(zhí)行原理解析

    關(guān)于hive中SQL的執(zhí)行原理解析

    這篇文章主要介紹了關(guān)于hive中SQL的執(zhí)行原理解析,Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能,需要的朋友可以參考下
    2023-07-07
  • 使用Dbeaver遠(yuǎn)程連接Hive的詳細(xì)方法

    使用Dbeaver遠(yuǎn)程連接Hive的詳細(xì)方法

    這篇文章主要介紹了使用Dbeaver遠(yuǎn)程鏈接Hive的詳細(xì)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 大數(shù)據(jù)量時(shí)提高分頁(yè)的效率

    大數(shù)據(jù)量時(shí)提高分頁(yè)的效率

    當(dāng)我們?cè)谔幚泶罅繑?shù)據(jù)的時(shí)候,就需要注意分頁(yè)的效率問(wèn)題了,下面大家可以看看
    2009-03-03

最新評(píng)論