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相关推荐

  1. apache spark_Apache Spark中的自定义日志

    apache spark 您是否曾经对运行了几个小时的Spark作业感到沮丧,但由于基础设施问题而失败了. 您会很晚才知道此故障,并浪费了数小时的时间,当Spark UI日志也无法进行事后检查时,它会 ...

  2. apache spark_Apache Spark Job的剖析

    apache spark Apache Spark是通用的大规模数据处理框架. 了解spark如何执行作业对于获取大部分作业非常重要. 关于Spark评估范式的简要介绍:Spark使用的是惰性评估范式 ...

  3. apache spark_Apache Spark:更改架构之前必须解决的5个陷阱

    apache spark 迁移到Apache Spark之前需要了解的5件事 似乎每个人都只是在谈论最热门的新技术,而忽略采用它的实际含义. 但这是自然的,对吧? 新功能和承诺胜过其他所有事物,而艰难 ...

  4. Apache Spark软件包,从XML到JSON

    Apache Spark社区为扩展Spark付出了很多努力. 最近,我们希望将XML数据集转换为更易于查询的内容. 我们主要对每天进行的数十亿笔交易之上的数据探索感兴趣. XML是一种众所周知的格式, ...

  5. mongodb json_在MongoDB和Spring Batch中将XML转换为JSON和原始使用

    mongodb json 总览 为什么将XML转换为JSON以在MongoDB中原始使用? 由于MongoDB使用JSON文档存储记录,就像表和行将记录存储在关系数据库中一样,我们自然需要将XML转换 ...

  6. 在MongoDB和Spring Batch中将XML转换为JSON和原始使用

    总览 为什么将XML转换为JSON以在MongoDB中原始使用? 由于MongoDB使用JSON文档存储记录,就像表和行将记录存储在关系数据库中一样,我们自然需要将XML转换为JSON. 某些应用程序 ...

  7. spark中读取json_【spark】文件读写和JSON数据解析

    1.读文件 通过 sc.textFile("file://")方法来读取文件到rdd中. val lines = sc.textFile("file://")/ ...

  8. 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:// ...

  9. 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 ...

最新文章

  1. 掩码语言模型(Masked Language Model)mlm
  2. 程序员如何做瑜伽? | 每日趣闻
  3. python输入y继续运行_python – 如何使Fabric在获取退出状态后继续运行下一个命令:1?...
  4. 顺序查找的基本原理及实现
  5. (六)jQuery选择器
  6. Non-resolvable parent POM
  7. 【实操手册】如何把一场直播录制下来?
  8. C# SplitContainer控件实现折叠展开面板
  9. 吐槽 intent:#Intent;S.K_1171477665=;end
  10. 5.1.2全景声音箱摆位_5.1.2全景声系统私人家庭影院设计方案
  11. 《财富》杂志评选出必读的75本最睿智的图书
  12. 【java学习】集合框架
  13. java字符串确定汉字_java中判断字符串中汉字的个数
  14. python 开发视频播放网站_python开发微电影视频网站教程附源码
  15. Markdown快速指南
  16. word2vec词向量原理
  17. 农行2021计算机专业面试题,2021农业银行总行笔试试题答案(考生回忆)-行测
  18. 太子妃升职记全集种子下载
  19. Rimworld通过SteamCMD上传创意工坊的方法
  20. 国外问卷调查项目的现状与前景

热门文章

  1. [科技]Loj#6564-最长公共子序列【bitset】
  2. CF613D-Kingdom and its Cities【虚树,LCA,树链剖分,贪心】
  3. jzoj4802-[GDOI2017模拟9.24]探险计划【费用流,拆点】
  4. MST(最小生成树)的构造
  5. [XSY] 简单的博弈题(博弈+dp+组合数+容斥)
  6. Sentinel(十二)之实时监控
  7. java jsp总结
  8. 英语不会读怎么办?它来教你……
  9. sql server操作案例
  10. html5动画是什么,10个HTML5动画 让你忘掉Flash是啥(组图)