我遇到的问题与其他许多有关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)...
我当然可以发布更多代码(如果有帮助的话,但是我实际上只是在跟随本教程,没有任何更改。
第一阶段的流媒体设置似乎很好,因为我可以看到发送了推文。
有什么建议吗?
谢谢!
我想数据帧不会创建,例如tempview。您必须使用“ tweets”临时视图名称创建数据框。示例代码为:
dataFrame.createOrReplaceTempView("tweets")
请检查您的代码包含此创建。
[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,它应该可以工作。它不会抛出异常,但是应该