"데이터 관리 혁신: Apache Hudi의 힘"

Apr 02 2023
.
빅 데이터에 대한 업서트, 삭제 및 증분 처리.


| id | name   | company  | skill 
+ — — + — — -+ — — — — + — — — -+
| 101|Vijay   | TCS       | Spark 
| 102|Sanish  | Axis      | scala 
| 103|Avinash | Paytm     | java 
| 104|Ashish  | Jio       | Nifi 
| 105|Rahul   | Accenture | ETL 

import org.apache.spark.sql.SaveMode
import org.apache.hudi.DataSourceWriteOptions
import org.apache.hudi.config.HoodieWriteConfig
import org.apache.spark.sql.functions.col

val df = spark.read
  .format("csv")
  .option("header", "true")
  .option("inferSchema", "true")
  .load("employee_data.csv")

val hoodieOptions = Map[String, String](
  HoodieWriteConfig.TABLE_NAME -> "employee_data",
  DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY -> "id",
  DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY -> "company",
  DataSourceWriteOptions.KEYGENERATOR_CLASS_OPT_KEY -> "org.apache.hudi.keygen.SimpleKeyGenerator"
)

val updatedData = Seq(
  (103, "Avinash", "Airtel", "java")
).toDF("id", "name", "company", "skill")

updatedData
  .write
  .format("org.apache.hudi")
  .options(hoodieOptions)
  .mode(SaveMode.Append)
  .save("../../employee_data")

| id | name   | company  | skill 
+ - - + - - -+ - - - - + - - - -+
| 101|Vijay   | TCS       | Spark 
| 102|Sanish  | Axis      | scala 
| 103|Avinash | Airtel     | java 
| 104|Ashish  | Jio       | Nifi 
| 105|Rahul   | Accenture | ETL