2016-06-01 13 views
7

Ich bin neu bei spark/Zeppelin und ich wollte eine einfache Übung, wo ich eine csv-Datei von Pandas zu Spark-Datenrahmen zu transformieren und dann registrieren Sie die Tabelle mit sql abfragen und mit Zeppelin visualisieren.Zeppelin - Kann nicht mit% sql eine Tabelle abfragen Ich registrierte mich bei pyspark

Aber ich scheine im letzten Schritt zu versagen.

Ich bin mit Funken 1.6.1

Hier ist mein Code:

%pyspark 
spark_clean_df.registerTempTable("table1") 
print spark_clean_df.dtypes 
print sqlContext.sql("select count(*) from table1").collect() 

Hier ist der Ausgang:

[('id', 'bigint'), ('name', 'string'), ('host_id', 'bigint'), ('host_name', 'string'), ('neighbourhood', 'string'), ('latitude', 'double'), ('longitude', 'double'), ('room_type', 'string'), ('price', 'bigint'), ('minimum_nights', 'bigint'), ('number_of_reviews', 'bigint'), ('last_review', 'string'), ('reviews_per_month', 'double'), ('calculated_host_listings_count', 'bigint'), ('availability_365', 'bigint')] 
[Row(_c0=4961)] 

Aber wenn ich versuche% SQL verwenden ich das bekommen Fehler:

%sql 
select * from table1 

Table not found: table1; line 1 pos 14 
set zeppelin.spark.sql.stacktrace = true to see full stacktrace 

Beliebig Hilfe wäre willkommen - ich weiß nicht einmal, wo ich diesen StackTrace finde und wie könnte er mir helfen.

Thanks :)

+0

Dieser Link war besonders nützlich, wenn es um dieses Problem ging: http://spark.apache.org/docs/latest/sql-programming-guide.html – StefanK

Antwort

3

Zeppelin verschiedene Kontexte für verschiedene Interpreten schaffen kann, ist es möglich, dass, wenn Sie einen Code mit% Funken und einige Codes mit% pyspark Dolmetschern Ihr Zeppelin zwei Kontexte ausgeführt hat. Und wenn Sie% sql verwenden, wird in einem anderen Kontext gesucht, nicht in% pyspark. Versuchen Sie, Zeppelin neu zu starten, und führen Sie% pyspark code als erste Anweisung und% sql als zweite Anweisung aus.

Wenn Sie auf die Registerkarte 'Interpreter' gehen, können Sie dort zeppelin.spark.sql.stacktrace hinzufügen. Und nach dem Neustart von Zeppelin sehen Sie die vollständige Stapelverfolgung an einer Stelle, an der Sie jetzt "Tabelle nicht gefunden" haben.

Eigentlich ist dies wahrscheinlich auf Ihre Frage beantworten When registering a table using the %pyspark interpreter in Zeppelin, I can't access the table in %sql

Try

%pyspark 
    sqlContext = sqlc 

als ersten beiden Zeilen

+0

Hallo, vielen Dank für den Vorschlag, aber ich denke, es ist nicht das, was ich gesucht habe. Ich habe weiter getestet, was das Problem sein könnte und kam zu dieser Lösung: Ich muss zuerst ein Schema der neuen Tabelle erstellen, eine leere Tabelle basierend auf dem Schema erstellen und das Datenframe spaltenweise analysieren und diese Werte übergeben data.frame in SQL-Tabelle, bevor ich es registriere. Sonst was ich registriere ist nichts leer. Ziemlich nervig und nicht sehr benutzerfreundlich ... Was ich einfacher fand, ist, die Daten mit matplotlib zu visualisieren und die Tabelle nicht als SQL zu registrieren, um sie abzufragen und Zeppelin-Visualisierungen zu verwenden. – StefanK

0

korrekte Syntax zu tun wäre:

sqlContext.registerDataFrameAsTable(spark_clean_df, 'table1') 
sqlContext.sql(select * from table1 where ...) 
1

auch verwandte zum verschiedenen Kontexten durch Funken erstellt überprüfen Sie die folgende Einstellung in der Funken Interpreter

zeppelin.spark.useHiveContext = false 

die Einstellung auf ‚false‘ gesetzt

1

Sie nicht sagen, welche Dolmetscher Gruppe, die Sie verwendet haben. Wenn es livy ist, können Sie nicht auf Tabellen zugreifen, die in %livy.pyspark von %livy.sql registriert werden. Ich habe diese von here:

for now %livy.sql can only access tables registered %livy.spark, but not %livy.pyspark and %livy.sparkr. 

Wenn Sie den Standard spark Interpreter Gruppe wechseln sollte es funktionieren. Ich kann dies mit Spark 1.6.3 und Zeppelin 0.7.0 für mich bestätigen. Hoffentlich werden die Leute, die am Livy-Interpreter arbeiten, diese Einschränkung beheben ...

+0

Soweit ich weiß, gab es keinen% livy.pyspark Interpreter. Leider habe ich keinen Zugriff mehr auf die Maschine, das kann ich nicht sicher sagen. Danke für den Tipp und Link trotzdem! – StefanK

Verwandte Themen