2015-05-15 3 views
9

Я конвертировали РДД [MyCLASS], чтобы dataframe, а затем зарегистрировать его в качестве таблицы SQLSparkSQL Таблица ошибка не найдена

my_rdd.toDF().registerTempTable("my_rdd") 

Эта таблица является вызываемая и может быть продемонстрирована с помощью следующей команды

%sql 

SELECT * from my_rdd limit 5 

Но следующий шаг дает ошибку, говоря, таблица не найдена: my_rdd

val my_df = sqlContext.sql("SELECT * from my_rdd limit 5") 

Очень новичок в Spark. Не понимаю, почему это происходит. Может ли кто-нибудь помочь мне в этом?

java.lang.RuntimeException: Table Not Found: my_rdd 
    at scala.sys.package$.error(package.scala:27) 
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog$$anonfun$1.apply(Catalog.scala:111) 
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog$$anonfun$1.apply(Catalog.scala:111) 
    at scala.collection.MapLike$class.getOrElse(MapLike.scala:128) 
    at scala.collection.AbstractMap.getOrElse(Map.scala:58) 
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.lookupRelation(Catalog.scala:111) 
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.getTable(Analyzer.scala:175) 
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$6.applyOrElse(Analyzer.scala:187) 
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$6.applyOrElse(Analyzer.scala:182) 
    at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$3.apply(TreeNode.scala:187) 
    at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$3.apply(TreeNode.scala:187) 
    at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:50) 
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:186) 
    at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$4.apply(TreeNode.scala:207) 
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:328) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
    at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) 
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103) 
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47) 
    at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273) 
    at scala.collection.AbstractIterator.to(Iterator.scala:1157) 
    at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265) 
    at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157) 
    at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252) 
    at scala.collection.AbstractIterator.toArray(Iterator.scala:1157) 
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformChildrenDown(TreeNode.scala:236) 
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:192) 
    at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$4.apply(TreeNode.scala:207) 
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:328) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
    at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) 
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103) 
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47) 
    at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273) 
    at scala.collection.AbstractIterator.to(Iterator.scala:1157) 
    at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265) 
    at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157) 
    at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252) 
    at scala.collection.AbstractIterator.toArray(Iterator.scala:1157) 
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformChildrenDown(TreeNode.scala:236) 
    at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:192) 
    at org.apache.spark.sql.catalyst.trees.TreeNode.transform(TreeNode.scala:177) 
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.apply(Analyzer.scala:182) 
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.apply(Analyzer.scala:172) 
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:61) 
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1$$anonfun$apply$2.apply(RuleExecutor.scala:59) 
    at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111) 
    at scala.collection.immutable.List.foldLeft(List.scala:84) 
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:59) 
    at org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$apply$1.apply(RuleExecutor.scala:51) 
    at scala.collection.immutable.List.foreach(List.scala:318) 
    at org.apache.spark.sql.catalyst.rules.RuleExecutor.apply(RuleExecutor.scala:51) 
    at org.apache.spark.sql.SQLContext$QueryExecution.analyzed$lzycompute(SQLContext.scala:1071) 
    at org.apache.spark.sql.SQLContext$QueryExecution.analyzed(SQLContext.scala:1071) 
    at org.apache.spark.sql.SQLContext$QueryExecution.assertAnalyzed(SQLContext.scala:1069) 
    at org.apache.spark.sql.DataFrame.<init>(DataFrame.scala:133) 
    at org.apache.spark.sql.DataFrame$.apply(DataFrame.scala:51) 
    at org.apache.spark.sql.SQLContext.sql(SQLContext.scala:915) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:68) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:73) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:75) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:77) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:79) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:81) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:83) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:85) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:87) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:89) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:91) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:93) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:95) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:97) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:99) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:101) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:103) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:105) 
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:107) 
    at $iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:109) 
    at $iwC$$iwC$$iwC$$iwC.<init>(<console>:111) 
    at $iwC$$iwC$$iwC.<init>(<console>:113) 
    at $iwC$$iwC.<init>(<console>:115) 
    at $iwC.<init>(<console>:117) 
    at <init>(<console>:119) 
    at .<init>(<console>:123) 
    at .<clinit>(<console>) 
    at .<init>(<console>:7) 
    at .<clinit>(<console>) 
    at $print(<console>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065) 
    at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1338) 
    at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840) 
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871) 
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819) 
    at org.apache.zeppelin.spark.SparkInterpreter.interpretInput(SparkInterpreter.java:556) 
    at org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java:532) 
    at org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java:525) 
    at org.apache.zeppelin.interpreter.ClassloaderInterpreter.interpret(ClassloaderInterpreter.java:57) 
    at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:93) 
    at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:264) 
    at org.apache.zeppelin.scheduler.Job.run(Job.java:170) 
    at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:118) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
+0

Попробуйте использовать приведенную ниже ссылку для справки, это может помочь вам решить проблему: https://spark.apache.org/docs/latest/sql-programming-guide.html#hive-tables – DeJaVo

+0

Не могли бы вы разместить минимальное полное пример? В настоящее время не полностью понятно, что вы пытаетесь http://stackoverflow.com/help/mcve –

+1

Убедитесь, что sqlContext, который вы регистрируете в DataFrame, и sqlContext, который вы выполняете, являются объектом ** SAME ** sqlContext. –

ответ

13

Убедитесь в том, чтобы импортировать implicits._ из того же SQLContext. Временные таблицы хранятся в памяти в одном конкретном SQLContext.

val sqlContext = new SQLContext(sc) 
import sqlContext.implicits._ 
my_rdd.toDF().registerTempTable("my_rdd") 

val my_df = sqlContext.sql("SELECT * from my_rdd LIMIT 5") 
my_df.collect().foreach(println) 
+0

У меня был 'import sqlContext._', добавив, что implicits исправил мою проблему. –

+0

@ DanCiborowski-MSFT после импорта имплицитов все еще я не могу использовать таблицу. Я создаю таблицу temp внутри метода карты dstream. val conbinedSensorStreams = sensor1StreamDF.union (sensor2StreamDF) .foreachRDD (rdd => rdd.toDF(). RegisterTempTable ("sensor_StreamTableTmp")) sqlContext.sql («Вставить в таблицу vsc.hive_snsrtable select * from sensor_StreamTableTmp»); Пожалуйста, дайте мне знать, если это можно сделать. –

+0

@VikramSinghChandel Не уверен относительно предложения 'insert', но для выбора из заманчивого, определенного внутри метода forEachRDD, импорт sqlContext.implicits._ работает, как упоминалось Marius –

1

Я нашел, что это легко вызвать проблемы с TempTables, если есть более чем одна открытая сессия дирижабль, либо в собственном браузере, или от кого-то другого, используя один и тот же сервер. Переменная sqlContext разделяется между этими сеансами и ее легко перезаписать ее значение.

0

Так как решение этой проблемы я скопировал ядро-site.xml, улья site.xml и HDFS-site.xml файлы в конф directoy.

0

Я встретил ту же ошибку, но в другом случае, решив ее с использованием того же контекста. Если вы используете hiveContext, убедитесь, что вы используете его все время, например, сначала sqlContext.sql("load data input XXX"), а затем, если вы используете hiveContext.sql("select * from XXX"), вы встретите эту проблему.

Каждый контекст имеет свой жизненный цикл. Поэтому не используйте два контекста с одним и тем же файлом данных.

+0

для чтения справки [edit help] (// stackoverflow.com/editing-help) в справочном центре. Форматирование переполнения стека отличается от других сайтов. – FrankerZ

0

Я столкнулся с аналогичной проблемой. Я загружал таблицу, которой не было в папке хранилища, тогда как консоль Hive показывала мне имя таблицы. Вы можете проверить подробное описание загружаемой таблицы с помощью описать форматированное имя_таблицы. Вам не нужно копировать файлы в папку spark/conf. Он уже интегрирован.

Смежные вопросы