Spark監視UI頁面上,出現好多SQLXXX,這個正常嗎?請各位幫我看看,謝謝了!


下面是我的代碼,就是從Kafka里拉取資料,然后轉換成DateFrame后存盤到elastic search中,
似乎只要是進入foreachRDD 里面一回,就會在SparkUI頁面上產生一個SQL監視物件,是不是我代碼寫法有問題
val logs = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet).map(_._2)
/*
* schema初期化
*/
val host = StructField("host", StringType, true)
val handle = StructField("handle", StringType, true)
val host_handle = StructField("host_handle", StringType, true)
val timestemp = StructField("timestemp", StringType, true)
val time = StructField("time", IntegerType, true)
val fromip = StructField("fromip", StringType, true)
val schema = StructType(Array(host, handle, host_handle, timestemp, time, fromip))
logs.foreachRDD { rdd =>
/*
* SQLContext初期化
*/
val sqlContext = new SQLContext(rdd.sparkContext)
// /*
// * DataFrame作成
// */
if (!rdd.partitions.isEmpty) {
val rowRDD = rdd.map(_.split(" ")).map(p =>
Row(p(1),
p(8).substring(1, p(8).length()),
p(1) + "_" + p(8).substring(1, p(8).length()),
stringTodate(p(5).substring(1, p(5).length())) + p(6).substring(0, p(6).length() - 1),
p(20).toInt,
p(2).substring(1, p(2).length())))
sqlContext.createDataFrame(rowRDD, schema).saveToEs(esResource)
}
sqlContext.clearCache()
}
ssc.start()
ssc.awaitTermination()
uj5u.com熱心網友回復:
有人知道嗎?uj5u.com熱心網友回復:
logs.foreachRDD { rdd =>/*
* SQLContext初期化
*/
val sqlContext = new SQLContext(rdd.sparkContext)
// /*
// * DataFrame作成
// */
if (!rdd.partitions.isEmpty) {
val rowRDD = rdd.map(_.split(" ")).map(p =>
Row(p(1),
p(8).substring(1, p(8).length()),
p(1) + "_" + p(8).substring(1, p(8).length()),
stringTodate(p(5).substring(1, p(5).length())) + p(6).substring(0, p(6).length() - 1),
p(20).toInt,
p(2).substring(1, p(2).length())))
sqlContext.createDataFrame(rowRDD, schema).saveToEs(esResource)
}
你每個rdd都給創建一個SQLContext 當然機web UI上面會有很多的sql tab了。你用一個單例的SQLContex就可以了。
uj5u.com熱心網友回復:
嗯是你說的那樣,剛看到你的回復,問題已經解決了,不過還得感謝你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/74366.html
標籤:Spark
