![](/img/trans.png)
[英]How to create a DataFrame from RDD of SparseVectors in Java
[英]Create Spark RDD or dataframe from Strings coming from InputStream in java
我在java中有一个字符串流。 这是来自其他机器上的 csv 文件。 我正在创建一个 InputStream 并从 java 中的 BufferedReader 逐行读取 csv 文件,如下所示。
//call a method that returns inputStream
InputStream stream = getInputStreamOfFile();
BufferedReader lineStream = new BufferedReader(new InputStreamReader(stream));
while ((inputLine = lineStream.readLine()) != null) {
System.out.println("******************new Line***********");
System.out.println(inputLine);
}
lineStream.close();
stream.close();
现在,我想从中创建一个 spark RDD 或 DataFrame。
一个解决方案是,我不断在每一行创建新的 RDD 并维护全局 RDD 并继续进行 RDD 的联合。 还有其他解决方案吗?
注意:此文件不在同一台机器上。 它来自某个远程存储。 我确实有该文件的 HTTP URL。
如果 inputStream 的内容适合内存,我们可以使用以下内容:
private static List<String> displayTextInputStream(InputStream input) throws IOException {
// Read the text input stream one line at a time and display each line.
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = null;
List<String> result = new ArrayList<String>();
while ((line = reader.readLine()) != null) {
result.add(line);
}
return result;
}
现在我们可以将List<String>
转换为相应的RDD
。
S3Object fullObject = s3Client.getObject(new GetObjectRequest("bigdataanalytics", each.getKey()));
List<String> listVals = displayTextInputStream(fullObject.getObjectContent());
JavaRDD<String> s3Rdd = sc.parallelize(listVals);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.