Java 使用spark(特定于spark的API)从文件夹访问最新更改的文件
我尝试使用spark的Java 使用spark(特定于spark的API)从文件夹访问最新更改的文件,java,apache-spark,hdfs,azure-storage-blobs,Java,Apache Spark,Hdfs,Azure Storage Blobs,我尝试使用spark的sc.textfile('/home/sathya/location/*.txt') 但是,我需要获取最新添加的文件,而不是获取目录下的所有文件 谢谢, Sathiyarajan M您可以从目录中获取最新修改的文件,并将其传递到sc.textFile()以在spark中读取 下面是如何获得最新修改的文件 val directory = new File("/home/sathya/location/") val allFiles = directory.listFiles
sc.textfile('/home/sathya/location/*.txt')
但是,我需要获取最新添加的文件,而不是获取目录下的所有文件
谢谢,
Sathiyarajan M您可以从目录中获取最新修改的文件,并将其传递到
sc.textFile()
以在spark中读取
下面是如何获得最新修改的文件
val directory = new File("/home/sathya/location/")
val allFiles = directory.listFiles
.filter(_.isFile)
.sortBy(-_.lastModified())
.toList
val latestFile = allFiles(0)
这里的latestFile
是最新修改的文件,现在您可以将最新的文件读入spark,如下所示
sc.textFile(latestFile)
希望这有帮助 您可以从目录中获取最新修改的文件,并将其传递到
sc.textFile()
以在spark中读取
下面是如何获得最新修改的文件
val directory = new File("/home/sathya/location/")
val allFiles = directory.listFiles
.filter(_.isFile)
.sortBy(-_.lastModified())
.toList
val latestFile = allFiles(0)
这里的latestFile
是最新修改的文件,现在您可以将最新的文件读入spark,如下所示
sc.textFile(latestFile)
希望这有帮助 对于您的问题,没有现成的解决方案,首先查找最新的文件,然后加载它 Java示例:
/**
* Function to get latest file in directory
*/
public static String latestFileInDir(String dir) throws IOException, InterruptedException {
//Replace hadoop home
String command = "<HADOOP_HOME>/bin/hadoop fs -ls -R " + dir + " | awk -F\" \" '{print $6\" \"$7\" \"$8}' | sort -nr | head -1";
ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", command);
String op = null;
Process process = pb.start();
int errCode = process.waitFor();
if (errCode == 0) {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
op = br.readLine();
}
return op;
}
对于您的问题没有现成的解决方案,首先查找最新的文件,然后加载它 Java示例:
/**
* Function to get latest file in directory
*/
public static String latestFileInDir(String dir) throws IOException, InterruptedException {
//Replace hadoop home
String command = "<HADOOP_HOME>/bin/hadoop fs -ls -R " + dir + " | awk -F\" \" '{print $6\" \"$7\" \"$8}' | sort -nr | head -1";
ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", command);
String op = null;
Process process = pb.start();
int errCode = process.waitFor();
if (errCode == 0) {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
op = br.readLine();
}
return op;
}
如果这回答了您的问题,您可以接受作为答案并结束主题。这对其他人也有帮助如果这回答了你的问题,你可以接受作为答案并结束话题。这对其他人也有帮助