一、要求

将XML中的account_number、model数据提取出来,并以account_number:model格式存储

1、XML文件数据格式

<activations>
  <activation timestamp="1225499258" type="phone">
  <account-number>316</account-number>
  <device-id>
    d61b6971-33e1-42f0-bb15-aa2ae3cd8680
  </device-id>
  <phone-number>5108307062</phone-number>
  <model>iFruit 1</model>
  </activation>

</activations>

2、存储格式:

1234:iFruit 1
987:Sorrento F00L
4566:iFruit 1

二、代码

import scala.xml._

//给定一个包含XML的字符串,解析字符串,并返回字符串中包含的激活XML记录(节点)的迭代器
def getactivations(xmlstring: String): Iterator[Node] = {
val nodes = XML.loadString(xmlstring) \\ "activation"
nodes.toIterator
} // 给定一个激活记录(XML节点),返回模型名称
def getmodel(activation: Node): String = {
(activation \ "model").text
} // 给定一个激活记录(XML节点),返回帐号
def getaccount(activation: Node): String = {
(activation \ "account-number").text
} //mydata1:(0:"路径":1:"内容")
//wholeTextFiles 创建包含文件名、文件内容的RDD
var mydata1 = sc.wholeTextFiles("file:/home/training/training_materials/data/activations/") //flatmap 遍历RDD中的文件内容得到文件内容的RDD
val mydata2=mydata1.flatMap(line => getactivations(line._2)) //通过函数获取对应节点的值,创建account-number:model RDD
val mydata3=mydata2.map(line => getaccount(line)+":"+getmodel(line)) //输出数据,测试数据格式
mydata3.take(10).foreach(println)

三、函数解释

 sc.wholeTextFiles (directory)

  从HDFS中读取文本文件的目录,本地文件系统(在所有节点上可用),或者任何hadoop支持的文件系统URI。每个文件被读取为单个记录,然后返回到键值对中,其中键是每个文件的路径,值是每个文件的内容。

例如:

  (filel.json,{"firstName":"Fred","lastName":"Flintstone","userid":"123"} )
  (file2.json,{"firstName":"Barney","lastName":"Rubble","userid":"234"} )
  (file3.json,... )
  (file4.json,... )

最新文章

  1. MVC4做网站后台:用户管理 &mdash;&mdash;用户组 2、查看、修改、删除用户组
  2. C#如何实现一个简单的流程图设计器
  3. 严格遵守“第一级DOM”能够让你避免与兼容性有关的任何问题
  4. Codeforces Round #350 (Div. 2) F. Restore a Number 模拟构造题
  5. sql server日志不能shrink或truncate
  6. Hadoop学习过程知识积累
  7. Ruby Scripting - Array
  8. 数据库(学习整理)----5--Oracle常用的组函数
  9. Java web 实现 之 Filter分析ip统计网站的访问次数
  10. 关于ie的h5 刷新和ctrl+5刷新 以及图标刷新的问题
  11. 含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如{321,3,32},最小的数为321323
  12. Linux 进程间通信(包含一个经典的生产者消费者实例代码)
  13. tomcat生产部署关键参数设置
  14. smarty 循环一维关联数组
  15. 【Django】数据迁移问题
  16. hdu 5724 Chess 博弈sg+状态压缩
  17. 《汇编语言 基于x86处理器》第十章 - 运行一个 16位实地址汇编程序
  18. 乘风破浪:LeetCode真题_024_Swap Nodes in Pairs
  19. 利用JS验证查询参数-选择月份后必须选择年份
  20. Tempdb--monitoring and troubleshooting

热门文章

  1. js标准对象
  2. mycat的安装及配置文件应用
  3. 数字三角形W
  4. mysql查看锁等信息SQL
  5. Ubuntu 16.04 Server 版安装过程图文详解
  6. python元组操作
  7. JS高度融合入门笔记(一)
  8. SVN配置自启动-1053错误
  9. 【Hive二】 Hive基本使用
  10. 讯为iTop4412嵌入式开发板学习之-------前言