[英]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.