日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

apache spark_Apache Spark软件包,从XML到JSON

發(fā)布時(shí)間:2023/12/3 asp.net 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache spark_Apache Spark软件包,从XML到JSON 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

apache spark

Apache Spark社區(qū)為擴(kuò)展Spark付出了很多努力。 最近,我們希望將XML數(shù)據(jù)集轉(zhuǎn)換為更易于查詢的內(nèi)容。 我們主要對(duì)每天進(jìn)行的數(shù)十億筆交易之上的數(shù)據(jù)探索感興趣。 XML是一種眾所周知的格式,但是有時(shí)使用起來(lái)可能很復(fù)雜。 例如,在Apache Hive中,我們可以定義XML模式的結(jié)構(gòu),然后使用SQL查詢它。

但是,我們很難跟上XML結(jié)構(gòu)的更改,因此放棄了先前的選項(xiàng)。 我們正在使用Spark Streaming功能將這些事務(wù)帶入我們的集群,并且我們正在考慮在Spark中進(jìn)行所需的轉(zhuǎn)換。 但是,仍然存在相同的問(wèn)題,因?yàn)槊看蝀ML結(jié)構(gòu)更改時(shí),我們都必須更改Spark應(yīng)用程序。

肯定有另一種方式!

有一個(gè)來(lái)自社區(qū)的Apache Spark軟件包,我們可以用來(lái)解決這些問(wèn)題。 在此博客文章中,我將指導(dǎo)您如何使用社區(qū)中的Apache Spark包將任何XML文件讀入DataFrame。

讓我們加載Spark shell并查看示例:

./spark-shell?—?packages com.databricks:spark-xml_2.10:0.3.3

在這里,我們只是將XML包添加到了我們的Spark環(huán)境中。 當(dāng)然,可以在編寫Spark應(yīng)用并將其打包到j(luò)ar文件中時(shí)添加。

使用該包,我們可以將任何XML文件讀入DataFrame。 加載DataFrame時(shí),我們可以指定數(shù)據(jù)的架構(gòu),但這首先是我們的主要關(guān)注點(diǎn),因此我們將讓Spark進(jìn)行推斷。 DataFrame模式的推斷是一個(gè)非常強(qiáng)大的技巧,因?yàn)槲覀儾辉傩枰涝撃J?#xff0c;因此它可以隨時(shí)更改。

讓我們看看如何將XML文件加載到DataFrame中:

val df = sqlContext.read.format("com.databricks.spark.xml").option("rowTag", "OrderSale").load("~/transactions_xml_folder/")df.printSchema

打印DataFrame架構(gòu)使我們對(duì)推理系統(tǒng)做了什么有所了解。

root|-- @ApplicationVersion: string (nullable = true)|-- @BusinessDate: string (nullable = true)|-- @Change: double (nullable = true)|-- @EmployeeId: long (nullable = true)|-- @EmployeeName: string (nullable = true)|-- @EmployeeUserId: long (nullable = true)|-- @MealLocation: long (nullable = true)|-- @MessageId: string (nullable = true)|-- @OrderNumber: long (nullable = true)|-- @OrderSourceTypeId: long (nullable = true)|-- @PosId: long (nullable = true)|-- @RestaurantType: long (nullable = true)|-- @SatelliteNumber: long (nullable = true)|-- @SpmHostOrderCode: string (nullable = true)|-- @StoreNumber: long (nullable = true)|-- @TaxAmount: double (nullable = true)|-- @TaxExempt: boolean (nullable = true)|-- @TaxInclusiveAmount: double (nullable = true)|-- @TerminalNumber: long (nullable = true)|-- @TimeZoneName: string (nullable = true)|-- @TransactionDate: string (nullable = true)|-- @TransactionId: long (nullable = true)|-- @UTCOffSetMinutes: long (nullable = true)|-- @Version: double (nullable = true)|-- Items: struct (nullable = true)| |-- MenuItem: struct (nullable = true)| | |-- #VALUE: string (nullable = true)| | |-- @AdjustedPrice: double (nullable = true)| | |-- @CategoryDescription: string (nullable = true)| | |-- @DepartmentDescription: string (nullable = true)| | |-- @Description: string (nullable = true)| | |-- @DiscountAmount: double (nullable = true)| | |-- @Id: long (nullable = true)| | |-- @PLU: long (nullable = true)| | |-- @PointsRedeemed: long (nullable = true)| | |-- @Price: double (nullable = true)| | |-- @PriceLessIncTax: double (nullable = true)| | |-- @PriceOverride: boolean (nullable = true)| | |-- @ProductivityUnitQuantity: double (nullable = true)| | |-- @Quantity: long (nullable = true)| | |-- @TaxAmount: double (nullable = true)| | |-- @TaxInclusiveAmount: double (nullable = true)|-- OrderTaxes: struct (nullable = true)| |-- TaxByImposition: struct (nullable = true)| | |-- #VALUE: string (nullable = true)| | |-- @Amount: double (nullable = true)| | |-- @ImpositionId: long (nullable = true)| | |-- @ImpositionName: string (nullable = true)|-- Payments: struct (nullable = true)| |-- Payment: struct (nullable = true)| | |-- #VALUE: string (nullable = true)| | |-- @AccountIDLast4: string (nullable = true

此時(shí),我們可以使用任何SQL工具通過(guò)Spark SQL查詢XML。 請(qǐng)閱讀這篇文章( Apache Spark作為分布式SQL引擎 )以了解有關(guān)Spark SQL的更多信息。 更進(jìn)一步,我們可以使用可以讀取JSON格式的數(shù)據(jù)的工具。 如果您擁有Apache Drill之類的東西,擁有JSON數(shù)據(jù)集就特別有用。

如果您對(duì)使用此Apache Spark軟件包將XML文件讀入DataFrame有任何疑問(wèn),請(qǐng)?jiān)谙旅娴脑u(píng)論部分中詢問(wèn)他們。

翻譯自: https://www.javacodegeeks.com/2016/08/apache-spark-packages-xml-json.html

apache spark

總結(jié)

以上是生活随笔為你收集整理的apache spark_Apache Spark软件包,从XML到JSON的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。