Java 在Windows系统中打印流(火花流)的内容
我只想将流的内容打印到控制台。我编写了以下代码,但它不打印任何内容。任何人都可以帮我在Spark中将文本文件读取为流??是否存在与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
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是我的流上下文 步骤:
我注意到的另一件事是,我必须将行分隔符更改为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/");