我正在关注《
程序: 没有任何其他选择的情况下启动了火花壳
scrapy shell http://something.com --set="ROBOTSTXT_OBEY=False"
《书》说
执行此代码后,流计算将在后台开始
....
现在该流正在运行,我们可以通过查询来试验结果
我的观察:
执行此代码后,它不会释放外壳程序供我键入命令 例如
val static = spark.read.json("/part-00079-tid-730451297822678341-1dda7027-2071-4d73-a0e2-7fb6a91e1d1f-0-c000.json")
val dataSchema = static.schema
val streaming = spark.readStream.schema(dataSchema) .option("maxFilesPerTrigger",1).json("/part-00079-tid-730451297822678341-1dda7027-2071-4d73-a0e2-7fb6a91e1d1f-0-c000.json")
val activityCounts = streaming.groupBy("gt").count()
val activityQuery = activityCounts.writeStream.queryName("activity_counts").format("memory").outputMode("complete").start()
activityQuery.awaitTermination()
因此,我无法查询此流
我的研究
我试图打开一个新的spark-shell,但是在该shell中进行查询不会返回任何结果。从此Shell获得的流是否可以从该Shell的其他另一个实例访问。
EDIT1:
我想要表在内存中,以便可以使用命令查询
`spark.streams.active`
答案 0 :(得分:3)
点对:
1)确保为Spark-shell分配了足够数量的内核
运行流媒体/结构化流媒体应用程序需要至少2个内核,以防止出现饥饿情况,即,在启动流媒体应用程序时,会将1个内核分配给 Receiver 如果您仅使用1个内核启动spark应用程序,则将没有可用的内核来处理执行者收到的消息。
要检查spark-shell中的内核数:
spark.conf.get("spark.master")
启动具有4核的spark-shell
spark-shell --master local[4]
2)您正在将流写入Memory,这将不会在控制台中显示输出,要显示您必须先注册表然后进行查询。
相反,您可以将格式从内存更改为控制台,以在控制台中查看内容。
val activityQuery = activityCounts.writeStream.queryName("activity_counts").format("console").outputMode("complete").start()
答案 1 :(得分:0)
在Spark shell中,只需避免使用activityQuery.awaitTermination()
。流已经以.start()
开始。
您也可以在activityQuery.stop()
之前停止播放流
答案 2 :(得分:0)
我知道答案真的很晚,您可能已经找到了答案,以防万一有人现在问这个问题:
您需要使用 spark.ui.showConsoleProgress = false
启动spark shell。spark-shell --conf spark.ui.showConsoleProgress=false
所述
将格式从内存更改为控制台,以查看以下内容 控制台
要了解更多信息,可以看到问题:
How to suppress the “Stage 2===>” from the output console in spark?
puhlen为此给出了完美的答案。
有关控制台进度栏的更多信息,请访问此link