江苏网站建设,wordpress模板导出,seo关键词快速提升软件官网,佛山网站建设78788Apache Spark社区为扩展Spark付出了很多努力。 最近#xff0c;我们希望将XML数据集转换为更易于查询的内容。 我们主要对每天进行的数十亿笔交易之上的数据探索感兴趣。 XML是一种众所周知的格式#xff0c;但是有时使用起来可能很复杂。 例如#xff0c;在Apache Hive中我们希望将XML数据集转换为更易于查询的内容。 我们主要对每天进行的数十亿笔交易之上的数据探索感兴趣。 XML是一种众所周知的格式但是有时使用起来可能很复杂。 例如在Apache Hive中我们可以定义XML模式的结构然后使用SQL查询它。 但是我们很难跟上XML结构的更改因此放弃了先前的选项。 我们正在使用Spark Streaming功能将这些事务引入我们的集群并且我们正在考虑在Spark中进行所需的转换。 但是仍然存在相同的问题因为每次XML结构更改时我们都必须更改Spark应用程序。 肯定有另一种方式 有一个来自社区的Apache Spark软件包我们可以用来解决这些问题。 在此博客文章中我将向您介绍如何使用社区中的Apache Spark包将任何XML文件读入DataFrame。 让我们加载Spark shell并查看示例 ./spark-shell — packages com.databricks:spark-xml_2.10:0.3.3 在这里我们只是将XML包添加到了我们的Spark环境中。 当然可以在编写Spark应用并将其打包到jar文件中时添加。 使用该包我们可以将任何XML文件读入DataFrame。 在加载DataFrame时我们可以指定数据的架构但这首先是我们的主要关注点因此我们将让Spark进行推断。 DataFrame模式的推断是一个非常强大的技巧因为我们不再需要了解该模式因此它可以随时更改。 让我们看看如何将XML文件加载到DataFrame中 val df sqlContext.read.format(com.databricks.spark.xml).option(rowTag, OrderSale).load(~/transactions_xml_folder/)df.printSchema 打印DataFrame架构使我们对推理系统做了什么有所了解。 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 此时我们可以使用任何SQL工具通过Spark SQL查询XML。 请阅读这篇文章 Apache Spark作为分布式SQL引擎 以了解有关Spark SQL的更多信息。 更进一步我们可以使用可以读取JSON格式的数据的工具。 如果您拥有Apache Drill之类的东西拥有JSON数据集就特别有用。 如果您对使用此Apache Spark软件包将XML文件读入DataFrame有任何疑问请在下面的评论部分中询问他们。 翻译自: https://www.javacodegeeks.com/2016/08/apache-spark-packages-xml-json.html