Java 在Windows系统中打印流(火花流)的内容

Java 在Windows系统中打印流(火花流)的内容,java,apache-spark,spark-streaming,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]") .setSpar

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

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

您不能使用
textFileStream
读取文本/csv文件,或者更确切地说,如果您只是在读取文件,则不需要流式处理

我的建议是监视一些目录(可能是HDFS或本地文件系统),然后使用
textFileStream
添加文件并捕获这些新文件的内容

可能在您的代码中,可能是您可以将
“C://testStream//copy.csv”
替换为
C://testStream”
,一旦Spark Stream作业启动并运行,然后将文件
copy.csv
添加到
C://testStream
文件夹中,并查看Spark Console上的输出

可能您可以编写另一个命令行Scala/Java程序来读取文件并将内容抛出套接字(在某个端口#),然后您可以利用
socketTextStream
捕获和读取数据。读取数据后,您还可以应用其他转换或输出操作

你也可以考虑杠杆效应


有关更多详细信息,请参阅。

这在Windows 7和Spark 1.6.3上对我很有效:(删除其余代码,重要的是如何定义要监视的文件夹)

这监控目录D:/tmp/data,ssc是我的流上下文

步骤:

  • 在D:/tmp/data中创建一个文件,例如1.txt
  • 输入一些文本
  • 启动spart应用程序
  • 将文件重命名为data.txt(我相信任何任意名称都可以,只要在spark监视目录时更改即可)

  • 我注意到的另一件事是,我必须将行分隔符更改为Unix样式(使用Notepad++),否则无法拾取文件。

    尝试以下代码,它可以工作:

    JavaDStream<String> dataStream = jssc.textFileStream("file:///C:/testStream/");
    
    JavaDStream dataStream=jssc.textFileStream(“file:///C:/testStream/");
    
    copy.csv的内容是什么?是逗号分隔的文件。我用内容更新了我的问题事实上,我不仅在阅读文件,我编写了代码的这一小部分只是为了让我的问题显而易见。事实上,我想将流的内容发送到naive bayes模型进行预测(机器学习),但不幸的是,我无法将文件作为流读取。请您向我详细解释如何在Spark中将csv文件作为流处理?我不明白如何在Windows中监视HDFS或本地文件系统??我尝试将“C://testStream//copy.csv”替换为“C://testStream”但当我将文件添加到目录时,这并没有起作用。。!!!我已经详细阐述了阅读文本文件的答案,就
    textFileStream
    而言,请确保您正在创建具有唯一/独特名称的新文件,并且内容也应该是新的。请勿重命名或复制具有相同内容的文件。那是行不通的。
    val ssc = ...
    val lines = ssc.textFileStream("file:///D:/tmp/data")
    ...
    print 
    
    JavaDStream<String> dataStream = jssc.textFileStream("file:///C:/testStream/");