[英]Print the content of streams (Spark streaming) in Windows system
我只想將流的內容打印到控制台。 我編寫了以下代碼,但未打印任何內容。 任何人都可以幫助我在Spark中以流形式讀取文本文件嗎? Windows系統有問題嗎?
public static void main(String[] args) throws Exception {
SparkConf sparkConf = new SparkConf().setAppName("My app")
.setMaster("local[2]")
.setSparkHome("C:\\Spark\\spark-1.5.1-bin-hadoop2.6")
.set("spark.executor.memory", "2g");
JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, Durations.seconds(2));
JavaDStream<String> dataStream = jssc.textFileStream("C://testStream//copy.csv");
dataStream.print();
jssc.start();
jssc.awaitTermination();
}
更新:copy.csv的內容是
0,0,12,5,0
0,0,12,5,0
0,1,2,0,42
0,0,0,0,264
0,0,12,5,0
textFileStream
用於監視hadoop兼容目錄。 此操作將監視提供的目錄,並且在將新文件添加到提供的目錄中時,將從新添加的文件中讀取/傳輸數據。
您無法使用textFileStream
讀取text / csv文件,或者我想說您不需要流傳輸,以防您只是在讀取文件。
我的建議是監視某個目錄(可以是HDFS或本地文件系統),然后添加文件並使用textFileStream
捕獲這些新文件的內容。
可能在您的代碼中,可能是您可以將"C://testStream//copy.csv"
替換為C://testStream"
並且在Spark Streaming作業啟動並運行后,將文件copy.csv
添加到C://testStream
文件夾,並在Spark Console上查看輸出。
要么
可能是您可以編寫另一個命令行Scala / Java程序,該程序讀取文件並通過Socket(在某個PORT#上)將內容拋出,然后您可以利用socketTextStream
捕獲和讀取數據。 讀取數據后,您將進一步應用其他轉換或輸出操作。
您也可以考慮利用Flume
有關更多詳細信息,請參閱API文檔 。
這在Windows 7和Spark 1.6.3上對我有用:(刪除其余代碼,重要的是如何定義要監視的文件夾)
val ssc = ...
val lines = ssc.textFileStream("file:///D:/tmp/data")
...
print
...
這監視目錄D:/ tmp / data,ssc是我的流上下文
腳步:
我注意到的另一件事是,我不得不將行分隔符更改為Unix樣式(使用Notepad ++),否則文件不會被拾取。
試試下面的代碼,它的工作原理:
JavaDStream<String> dataStream = jssc.textFileStream("file:///C:/testStream/");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.