Zeppelin - 无法用%sql查询我在pyspark注册的表

Ste*_*anK 7 apache-spark apache-spark-sql pyspark apache-zeppelin

我是spark/zeppelin的新手,我想完成一个简单的练习,在那里我将csv文件从pandas转换为Spark数据框,然后注册表以使用sql查询它并使用Zeppelin将其可视化.

但我似乎在最后一步失败了.

我使用的是Spark 1.6.1

这是我的代码:

%pyspark
spark_clean_df.registerTempTable("table1")
print spark_clean_df.dtypes
print sqlContext.sql("select count(*) from table1").collect()
Run Code Online (Sandbox Code Playgroud)

这是输出:

[('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)]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用%sql时,我收到此错误:

%sql
select * from table1

Table not found: table1; line 1 pos 14
set zeppelin.spark.sql.stacktrace = true to see full stacktrace
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激 - 我甚至不知道在哪里可以找到这个堆栈跟踪,它怎么能帮助我.

谢谢 :)

小智 4

Zeppelin 可以为不同的解释器创建不同的上下文,如果您使用 %spark 执行一些代码并使用 %pyspark 解释器执行一些代码,您的 Zeppelin 可能有两个上下文。当您使用 %sql 时,它会在另一个上下文中查找,而不是在 %pyspark 中查找。尝试重新启动 Zeppelin 并执行 %pyspark 代码作为第一个语句,然后执行 %sql 作为第二个语句。

如果您转到“解释器”选项卡,您可以在那里添加 zeppelin.spark.sql.stacktrace 。重新启动 Zeppelin 后,您将在“未找到表”的位置看到完整的堆栈跟踪。

实际上,这可能是您问题的答案 当在 Zeppelin 中使用 %pyspark 解释器注册表时,我无法访问 %sql 中的表

试着做

    %pyspark
    sqlContext = sqlc
Run Code Online (Sandbox Code Playgroud)

作为前两行