【发布时间】:2017-04-26 14:15:55
【问题描述】:
我正在向 HDFS 发送流并尝试使用 spark 读取文本文件。
JavaStreamingContext jssc = new JavaStreamingContext(jsc, new
Duration(1000));
JavaPairInputDStream<LongWritable, Text> textStream =
jssc.fileStream("hdfs://myip:9000/travel/FlumeData.[0-9]*",
LongWritable.class, Text.class, TextInputFormat.class);
在向 hdfs 发送流时,会创建一些 FlumeData.1234.tmp 文件,一旦收到完整数据,该文件就会转换为适当的文件,例如。 FlumeData.1234
我想忽略这个要读取的 .tmp 文件。我尝试使用正则表达式
hdfs://myip:9000/travel/FlumeData.[0-9]* hdfs://myip:9000/travel/FlumeData.//d*
但他们不工作。我正在寻找这样的东西 jssc.fileStream("hdfs://myip:9000/travel/FlumeData.[0-9]*", LongWritable.class, Text.class, TextInputFormat.class);
fileStream 不应从文件扩展名中读取 .tmp。
我还尝试按照 Hadoop 代码检索苍蝇列表
private String pathValue(String PathVariable) throws IOException{
Configuration conf = new Configuration();
Path path = new Path(PathVariable);
FileSystem fs = FileSystem.get(path.toUri(), conf);
System.out.println("PathVariable" + fs.getWorkingDirectory());
return fs.getName();
}
但它的文件系统对象 fs 没有文件名()。由于新文件是在运行时创建的。我需要阅读他们创建的内容。
【问题讨论】:
标签: regex hadoop apache-spark spark-streaming