簡體   English   中英

spark:讀取實木復合地板文件並進行處理

[英]spark: read parquet file and process it

我是Spark 1.6的新手。 我想閱讀一個實木復合地板文件並進行處理。 為了簡化起見,假設有一個具有以下結構的實木復合地板:

id, amount, label

我有3條規則:

amount < 10000 => label=LOW
10000 < amount < 100000 => label=MEDIUM
amount > 1000000 => label = HIGH

如何在Spark和Scala中做到這一點?

我嘗試這樣的事情:

case class SampleModels(
  id: String,
  amount: Double,
  label: String,
)

val sc = SparkContext.getOrCreate()
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._

val df = sqlContext.read.parquet("/path/file/")
val ds = df.as[SampleModels].map( row=>
    MY LOGIC 
    WRITE OUTPUT IN PARQUET
)

這是正確的方法嗎? 有效率嗎? “ MYLOGIC”可能更復雜。

謝謝

是的,這是使用Spark的正確方法。 如果你的邏輯很簡單,你可以嘗試使用內置函數在數據幀直接操作(比如你的情況),這將是一個有點快於映射行,以案例類,並在JVM中執行代碼,你會能夠輕松將結果保存到拼花地板上。

是的,這是正確的方法。 它將對您的完整數據進行一次遍歷,以構建所需的額外列。

如果您想使用sql方式,這是可行的方法,

val df = sqlContext.read.parquet("/path/file/")
df.registerTempTable("MY_TABLE")
val df2 = sqlContext.sql("select *, case when amount < 10000 then LOW else HIGH end as label from MY_TABLE")

請記住,盡管要使用hiveContext而不是sparkContext。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM