Windows系统打印流的内容(Spark Streaming)

Eya*_*yad 2 java apache-spark spark-streaming

我只想将流的内容打印到控制台。我编写了以下代码,但它没有打印任何内容。任何人都可以帮助我在 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();
}
Run Code Online (Sandbox Code Playgroud)

更新: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
Run Code Online (Sandbox Code Playgroud)

Sum*_*mit 5

textFileStream用于监控 hadoop 兼容目录。此操作将监视提供的目录,当您在提供的目录中添加新文件时,它将从新添加的文件中读取/流式传输数据。

您无法使用文本/ csv 文件读取,textFileStream或者更确切地说,我会说您不需要流式传输,以防您只是在读取文件。

我的建议是监视某个目录(可能是 HDFS 或本地文件系统),然后添加文件并使用textFileStream.

可能在您的代码中,您可以替换"C://testStream//copy.csv"C://testStream",一旦您的 Spark Streaming 作业启动并运行,然后将文件添加copy.csvC://testStream文件夹并在 Spark 控制台上查看输出。

或者

也许您可以编写另一个命令行 Scala/Java 程序,该程序读取文件并将内容通过 Socket(在某个 PORT# 处)抛出,然后您可以利用它socketTextStream来捕获和读取数据。读取数据后,您可以进一步应用其他转换或输出操作。

你也可以认为杠杆的水槽

有关更多详细信息,请参阅API 文档