Spark бросает AnalysisException: неопределенная функция: 'count' для встроенной функции spark - PullRequest
0 голосов
/ 27 марта 2019

Если я запускаю следующий код в spark (2.3.2.0-mapr-1901), он работает нормально при первом запуске.

SELECT   count( `cpu-usage` ) as `cpu-usage-count` ,  sum( `cpu-usage` ) as `cpu-usage-sum` ,  percentile_approx( `cpu-usage`, 0.95 ) as `cpu-usage-approxPercentile` 
    FROM  filtered_set

Где filtered_set - это DataFrame, который был зарегистрирован как временное представление с использованием createOrReplaceTempView.

Я получаю результат, и все хорошо на первом звонке. Но ...

Если я затем снова запускаю это задание (обратите внимание, что это общий контекст искры, управляемый через apache livy), Spark выдает:

Wrapped by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.apache.spark.sql.AnalysisException: Undefined function: 'count'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 2 pos 10
org.apache.spark.sql.catalyst.analysis.Analyzer$LookupFunctions$$anonfun$apply$15$$anonfun$applyOrElse$50.apply(Analyzer.scala:1216)
org.apache.spark.sql.catalyst.analysis.Analyzer$LookupFunctions$$anonfun$apply$15$$anonfun$applyOrElse$50.apply(Analyzer.scala:1216)
org.apache.spark.sql.catalyst.analysis.package$.withPosition(package.scala:53)
org.apache.spark.sql.catalyst.analysis.Analyzer$LookupFunctions$$anonfun$apply$15.applyOrElse(Analyzer.scala:1215)
org.apache.spark.sql.catalyst.analysis.Analyzer$LookupFunctions$$anonfun$apply$15.applyOrElse(Analyzer.scala:1213)
org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$2.apply(TreeNode.scala:267)

...

org.apache.spark.sql.execution.QueryExecution.analyzed(QueryExecution.scala:55)
org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:47)
org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:74)
org.apache.spark.sql.SparkSession.sql(SparkSession.scala:642)
org.apache.spark.sql.SQLContext.sql(SQLContext.scala:694)

Эта проблема возникает при втором запуске задания Livy (которое использует предыдущий сеанс Spark). Он не изолирован только функцией подсчета (и т. Д. Также происходит с суммой и т. Д.), И любая функция, по-видимому, дает сбой при втором запуске, независимо от того, что было вызвано при первом запуске.

Кажется, что реестр функций Spark очищается (включая встроенные функции по умолчанию). Мы ничего не делаем с контекстом искры.

Вопросы: - Это ожидаемое или нормальное поведение с искрой? - Как бы я переустановил или инициализировал сеанс зажигания, чтобы он не потерял все эти функции?

Я видел Undefined function ошибок, описанных в других местах в терминах пользовательских функций, но никогда не встроенных модулей.

...