Я новичок в Zeppelin (и spark & sql) и пытаюсь запустить пример в блокноте Zeppelin.Я не могу понять, что не так с этой ошибкой:
list: (table: String, col: String)Array[(String, String)]
tables: ()Array[(String, String)]
columns: (table: String)Array[(String, String)]
org.apache.spark.sql.AnalysisException: Invalid usage of '*' in expression 'alias';
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$class.failAnalysis(CheckAnalysis.scala:39)
...
Пример, который я пытаюсь запустить, взят из этого поста: https://randerzander.github.io/?post=dynamic-forms.md
И код выглядит так:
def list(table: String, col: String) : Array[(String, String)] = {
sqlContext.sql("select distinct " + col + " from " + table + " order by " + col).collect.map(x => (x(0).asInstanceOf[String], x(0).asInstanceOf[String]))
}
def tables(): Array[(String, String)] = {
sqlContext.sql("show tables").collect.map(x => (x(0).asInstanceOf[String], x(0).asInstanceOf[String]))
}
def columns(table: String) : Array[(String, String)] = {
sqlContext.sql("select * from " + table + " limit 0").columns.map(x => (x, x))
}
val col1 = z.select("col1", columns(table))
val col2 = z.select("col2", columns(table))
val query = "select " + col1 + "," + col2 + ", count(*) as count from " + table + " group by " + col1 + "," + col2 + " order by count desc"
val df = sqlContext.sql(query)
println("%table " + df.columns.mkString("\t"))
println(df.map(x => x.mkString("\t")).collect().mkString("\n"))
Спасибо