PySpark org.apache.spark.sql.AnalysisException:未找到表或视图:

问题描述 投票:2回答:2

我遇到的问题与其他许多有关PySpark的问题类似,但是这些解决方案似乎都不适合我的问题,因此我要发布一个新问题。

我正在学习本教程https://github.com/emiljdd/Tweepy-SparkTwitterI,但似乎无法使第二阶段的步骤7正常工作。

运行此代码:

count = 0
while count < 10:

 time.sleep( 3 )
 top_10_tweets = sqlContext.sql( 'Select tag, count from tweets' )
 top_10_df = top_10_tweets.toPandas() # Dataframe library
 display.clear_output(wait=True) #Clears the output, if a plot exists.
 sns.plt.figure( figsize = ( 10, 8 ) )
 sns.barplot( x="count", y="tag", data=top_10_df)
 sns.plt.show()
 count = count + 1

我收到以下错误:

Py4JJavaError: An error occurred while calling o24.sql.
: org.apache.spark.sql.AnalysisException: Table or view not found: tweets; line 1 pos 23
    at org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:47)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.org$apache$spark$sql$catalyst$analysis$Analyzer$ResolveRelations$$lookupTableFromCatalog(Analyzer.scala:665)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.resolveRelation(Analyzer.scala:617)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$8.applyOrElse(Analyzer.scala:647)
    at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$8.applyOrElse(Analyzer.scala:640)...

我当然可以发布更多代码(如果有帮助的话,但是我实际上只是在跟随本教程,没有任何更改。

第一阶段的流媒体设置似乎很好,因为我可以看到发送了推文。

有什么建议吗?

谢谢!

python apache-spark twitter pyspark
2个回答
2
投票

我想数据帧不会创建,例如tempview。您必须使用“ tweets”临时视图名称创建数据框。示例代码为:

dataFrame.createOrReplaceTempView("tweets")

请检查您的代码包含此创建。


0
投票

[https://github.com/emiljdd/Tweepy-SparkTwitterI/issues/5,在github问题页面上已回答的问题

问题是该教程的第4步此代码行

( lines.flatMap( lambda text: text.split( " " ) ) 
             .filter( lambda word: word.lower().startswith("#") ) 
             .map( lambda word: ( word.lower(), 1 ) ) 
             .reduceByKey( lambda a, b: a + b ) 
             .map( lambda rec: Tweet( rec[0], rec[1] ) ) 
             ##.foreachRDD( lambda rdd: rdd.toDF().sort( desc("count") # the desc here doesnt work with 
             .foreachRDD( lambda rdd: rdd.toDF().sort("count")      
             .limit(10).registerTempTable("tweets") ) )

删除排序中的desc,它应该可以工作。它不会抛出异常,但是应该

© www.soinside.com 2019 - 2024. All rights reserved.