2015-05-15 12 views
9

I umgewandelt ein RDD [myClass], um Datenrahmen und registrieren sie dann als SQL-TabelleSparkSQL Fehler Tabelle nicht gefunden

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

Diese Tabelle ist aufrufbar und kann mit folgendem Befehl

nachgewiesen werden
%sql 

SELECT * from my_rdd limit 5 

Aber der nächste Schritt gibt Fehler, Tisch sagen nicht gefunden: my_rdd

Ganz Neuling für Spark. Versteh nicht warum das passiert. Kann mir da jemand helfen?

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

Versuchen Sie, den folgenden Link als Referenz verwenden, es könnte Ihnen helfen, das Problem zu lösen: https://spark.apache.org/docs/latest/sql-programming-guide.html#hive-tables – DeJaVo

+0

Konnten Sie eine minimale abgeschlossen Beispiel? Im Moment ist es nicht ganz klar, was Sie versuchen http://StackOverflow.com/Help/Mcve –

+1

Stellen Sie sicher, dass der SQL-Context, den Sie Ihren DataFrame registrieren, und der SQL-Context, den Sie ausführen, das SQL-Objekt SAME {SAME} sind. –

Antwort

13

Achten Sie auf die implicits._ aus demselben SqlContext zu importieren. Temporäre Tabellen werden in einem bestimmten SQLContext im Speicher gehalten.

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

Ich hatte 'import sqlContext._' und fügte implicits hinzu, behob mein Problem. –

+0

@ DanCiborowski-MSFT nach dem Importieren von implicts kann ich die Tabelle nicht verwenden. Ich erstelle die temporäre Tabelle innerhalb der Kartenmethode von dstream. val conbinedSensorStreams = sensor1StreamDF.union (sensor2StreamDF) .foreRAnd (rdd => rdd.toDF(). RegisterTempTable ("sensor_StreamTableTmp")) sqlContext.sql ("In Tabelle einfügen vsc.hive_snsrtable select * from sensor_StreamTableTmp"); Bitte lassen Sie mich wissen, wenn dies möglich ist –

+0

@VikramSinghChandel Nicht sicher über die 'einfügen' -Klausel, aber für die Auswahl aus einer temptable in der forEachRDD-Methode definiert, funktioniert der Import sqlContext.implicits._ funktioniert wie von Marius –

1

Ich fand es einfach Probleme mit TempTables zu verursachen, wenn es mehr als eine offene zeppelin Sitzung ist, entweder in Ihrem eigenen Browser oder von jemandem anderen des gleichen Server. Die Variable sqlContext wird für diese Sitzungen freigegeben und kann leicht überschrieben werden.

0

, um die Lösung dieses Problems kopierte ich Kern-site.xml, hive-site.xml und hdfs-site.xml Dateien in conf Directoy.

0

Ich habe den gleichen Fehler aber in anderem Fall, durch die gleiche Kontext verwenden gelöst. Wenn Sie hiveContext verwenden, stellen Sie sicher, dass Sie es die ganze Zeit verwenden, zum Beispiel zuerst sqlContext.sql("load data input XXX"), und dann, wenn Sie hiveContext.sql("select * from XXX") verwenden, werden Sie dieses Problem begegnen.

Jeder Kontext hat seinen Lebenszyklus. Verwenden Sie also nicht zwei Kontext mit demselben Datenrahmen.

+0

erwähnt Nehmen Sie sich einen Moment Lesen Sie die [Hilfe zum Bearbeiten] (// stackoverflow.com/editing-help) in der Hilfe. Die Formatierung auf Stack Overflow unterscheidet sich von anderen Sites. – FrankerZ

0

Ich konfrontiert mit einem ähnlichen Problem. Ich habe eine Tabelle geladen, die nicht im Warehouse-Ordner vorhanden war, während die Hive-Konsole den Tabellennamen anzeigt. Sie können die detaillierte Beschreibung der Tabelle, die Sie laden, mit beschreiben formatiert tabellenname. Sie müssen keine Datei in den Ordner "funken/conf" kopieren. Es ist bereits integriert.