簡體   English   中英

在Windows系統中打印流的內容(火花流)

[英]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是我的流上下文

腳步:

  1. 在D:/ tmp / data中創建一個說1.txt的文件
  2. 輸入一些文字
  3. 啟動spart應用程序
  4. 將文件重命名為data.txt(我相信只要在Spark監視目錄時更改名稱,任何名稱都可以)

我注意到的另一件事是,我不得不將行分隔符更改為Unix樣式(使用Notepad ++),否則文件不會被拾取。

試試下面的代碼,它的工作原理:

JavaDStream<String> dataStream = jssc.textFileStream("file:///C:/testStream/");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM