2016-05-13 20 views
0

我想擴展SparkSQL Catalyst分析器一些額外的規則。SparkSql催化劑擴展分析器,與CatalystConf錯誤

我收到以下錯誤:

**""" trait CatalystConf in package catalyst cannot be accessed in package org.apache.spark.sql.catalyst """** 

在我嘗試我做了以下內容:

class CustomSQLContext(sc: SparkContext) extends SQLContext(sc) { 
    val an = new CustomAnalyzer(Map("testRule" -> testRule),catalog,functionRegistry,conf) 
    override lazy val analyzer: Analyzer = an 
    } 

class CustomAnalyzer(rules: Map[String, Rule[LogicalPlan]], catalog: Catalog, registery: FunctionRegistry, conf: CatalystConf) 
    extends Analyzer(catalog, registery, conf) { 
    ...... 
    override lazy val batches = my_batch.toSeq ++ default_batches ++ Nil 
    } 

任何想法如何,我可以通過CONF到customAnalyzer沒有這個錯誤?

我不認爲這是導入錯誤,因爲它看到包,但它不能訪問該文件。

我試着將它作爲SQLConf傳遞,但得到一個未找到的錯誤和導入似乎不工作。

謝謝!

回答

0

那類是私人

package org.apache.spark.sql.catalyst 

private[spark] trait CatalystConf { 
    def caseSensitiveAnalysis: Boolean 
} 

使用您的代碼幾乎未曾是,如果你自己代碼將被放置到org.apache.spark.sql.catalyst包的唯一方法。這並不吸引人。所以你必須將相關代碼複製到你自己的包中 - 而不僅僅是擴展它。

+0

謝謝你的回覆。是的,我看到這是私人的,但我希望有辦法規避這種情況。我願意改變我的方法,但我需要一種擴展分析儀的方法,但不知道如何。 – Sib