最近项目中用到spark和ES的集成,涉及到一系列对dataFrame列的操作,时间主要花在列的增删改上面。
整个类采用的是spark+ES+Redis架构,ES存基础数据,redis 存储条件,根据redis的条件从ES筛选出符合条件的记录。
val sqlContex = SparkSession.builder().master("local[2]") .appName("spark2ES") // .config("hive.metastore.uris", "thrift://172.1.1.199:9083") //集成hive .config("spark.testing.memory", "2147480000") .config("es.index.auto.create", "true") .config("es.nodes", "xxxx") // .enableHiveSupport() // 增加hive支持 .getOrCreate()
// 读取es数据
val optionMap = Map("path" -> "ods_wj_apk_index/docs", "pushdown" -> "true") val esDF = sqlContex.read.format("org.elasticsearch.spark.sql").options(optionMap).load()
// 增加列操作
// 方法一 sql的自定义函数 val topic ="topic123" tempDataFrame.createOrReplaceTempView("temp") sqlContex.sqlContext.udf.register("replaceCol"