apache spark_Apache Spark软件包,从XML到JSON
apache spark
Apache Spark社区为扩展Spark付出了很多努力。 最近,我们希望将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
apache spark
apache spark_Apache Spark软件包,从XML到JSON相关推荐
- apache spark_Apache Spark中的自定义日志
apache spark 您是否曾经对运行了几个小时的Spark作业感到沮丧,但由于基础设施问题而失败了. 您会很晚才知道此故障,并浪费了数小时的时间,当Spark UI日志也无法进行事后检查时,它会 ...
- apache spark_Apache Spark Job的剖析
apache spark Apache Spark是通用的大规模数据处理框架. 了解spark如何执行作业对于获取大部分作业非常重要. 关于Spark评估范式的简要介绍:Spark使用的是惰性评估范式 ...
- apache spark_Apache Spark:更改架构之前必须解决的5个陷阱
apache spark 迁移到Apache Spark之前需要了解的5件事 似乎每个人都只是在谈论最热门的新技术,而忽略采用它的实际含义. 但这是自然的,对吧? 新功能和承诺胜过其他所有事物,而艰难 ...
- Apache Spark软件包,从XML到JSON
Apache Spark社区为扩展Spark付出了很多努力. 最近,我们希望将XML数据集转换为更易于查询的内容. 我们主要对每天进行的数十亿笔交易之上的数据探索感兴趣. XML是一种众所周知的格式, ...
- mongodb json_在MongoDB和Spring Batch中将XML转换为JSON和原始使用
mongodb json 总览 为什么将XML转换为JSON以在MongoDB中原始使用? 由于MongoDB使用JSON文档存储记录,就像表和行将记录存储在关系数据库中一样,我们自然需要将XML转换 ...
- 在MongoDB和Spring Batch中将XML转换为JSON和原始使用
总览 为什么将XML转换为JSON以在MongoDB中原始使用? 由于MongoDB使用JSON文档存储记录,就像表和行将记录存储在关系数据库中一样,我们自然需要将XML转换为JSON. 某些应用程序 ...
- spark中读取json_【spark】文件读写和JSON数据解析
1.读文件 通过 sc.textFile("file://")方法来读取文件到rdd中. val lines = sc.textFile("file://")/ ...
- json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...
1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...
- dict 转换成json_Python XML转换为JSON,XML转换为Dict
dict 转换成json Today we will learn how to convert XML to JSON and XML to Dict in python. We can use py ...
最新文章
- 掩码语言模型(Masked Language Model)mlm
- 程序员如何做瑜伽? | 每日趣闻
- python输入y继续运行_python – 如何使Fabric在获取退出状态后继续运行下一个命令:1?...
- 顺序查找的基本原理及实现
- (六)jQuery选择器
- Non-resolvable parent POM
- 【实操手册】如何把一场直播录制下来?
- C# SplitContainer控件实现折叠展开面板
- 吐槽 intent:#Intent;S.K_1171477665=;end
- 5.1.2全景声音箱摆位_5.1.2全景声系统私人家庭影院设计方案
- 《财富》杂志评选出必读的75本最睿智的图书
- 【java学习】集合框架
- java字符串确定汉字_java中判断字符串中汉字的个数
- python 开发视频播放网站_python开发微电影视频网站教程附源码
- Markdown快速指南
- word2vec词向量原理
- 农行2021计算机专业面试题,2021农业银行总行笔试试题答案(考生回忆)-行测
- 太子妃升职记全集种子下载
- Rimworld通过SteamCMD上传创意工坊的方法
- 国外问卷调查项目的现状与前景
热门文章
- [科技]Loj#6564-最长公共子序列【bitset】
- CF613D-Kingdom and its Cities【虚树,LCA,树链剖分,贪心】
- jzoj4802-[GDOI2017模拟9.24]探险计划【费用流,拆点】
- MST(最小生成树)的构造
- [XSY] 简单的博弈题(博弈+dp+组合数+容斥)
- Sentinel(十二)之实时监控
- java jsp总结
- 英语不会读怎么办?它来教你……
- sql server操作案例
- html5动画是什么,10个HTML5动画 让你忘掉Flash是啥(组图)