我有一个问题类似于许多其他已发布的关于 PySpark 的问题,但这些解决方案似乎都不适用于我的问题,所以我发布了一个新问题。
我正在学习本教程 https://github.com/emiljdd/Tweepy-SparkTwitterI ,但似乎无法使第 II 阶段的第 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”临时 View 名称创建数据框。示例代码是:
dataFrame.createOrReplaceTempView("tweets")
请检查您的代码是否包含此创建。
示例片段:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Dataframe example').getOrCreate()
dataframe = spark.read.csv("/path/to/file.csv", inferSchema = True, header = True)
dataframe.show()
dataframe.createOrReplaceTempView("tempview")
spark.sql('select id,name from tempview').show()
spark.sql('select avg(age) from tempview').show()
