Spark實戰練習01 XML資料處理

2022-03-06 17:31:20 字數 2008 閱讀 4286

一、要求

將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] =

//給定乙個啟用記錄(xml節點),返回模型名稱

def getmodel(activation: node): string =

//給定乙個啟用記錄(xml節點),返回帳號

def getaccount(activation: node): string =

//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, )

(file2

.json, )

(file3

.json,

...

)(file4

.json,

...

)

Spark 操作hive實戰練習

比如 user3,已經有了5月5號的訂單 不公開 來評測模型的 我們有的是5月4號之前的歷史資料 我們需要 通過歷史 5月4號之前訂單資料 這個使用者5月5號買了什麼 1 資料準備 a 在hive中建立orders訂單外部表 b 在hive中建立products商品外部表 c 在hive中建立pri...

Spark實戰練習03 Pair RDD

一 場景 現有某 的 日誌,內容為使用者對 的請求,包含user id ip address datetime 等等 另有乙份檔案中包含使用者的賬戶詳細資訊資料,包含user id creation date first last name等等 二 任務 1 統計每位使用者的請求次數 1 從檔案建立...

Spark實戰練習02 處理分隔符

一 場景 devicestatus.txt 檔案包含了來自於不同運營商的移動裝置的資料,不同的資料格式,包括裝置id 當前狀態 位置等等。注意,該檔案中的記錄具有不同的字段分隔符 一些使用逗號,一些使用管道 等等。二 任務 提取date 第乙個字段 model 第二個字段 devive id 第三字...