Я пытаюсь перенести код hadoop в искру. У меня уже есть некоторые предопределенные функции, которые я должен иметь возможность использовать в искры, поскольку они представляют собой просто коды Java, без значительной зависимости от hadoop. У меня есть функция, которая принимает входные данные (пространственные данные, долготу, широту) в текстовом формате и преобразует их в форму (полигоны, линейный поток и т. Д.). Когда я пытаюсь прочитать его в Spark, я сначала читаю каждую строку файлов как String. Затем преобразуйте их в Text, чтобы я мог использовать ранее созданную функцию. Но у меня есть два сомнения, во-первых, похоже, что JavaRDD не использует Text, и у меня возникают некоторые проблемы для этого. Во-вторых, функция, которая преобразует текст в фигуру, ничего не возвращает. Но я не могу использовать flatMap или любую другую технологию отображения. Я даже не уверен, правильный ли мой подход или нет.Использование текстового типа данных в JavaRDD и возврат пустоты в FlatMap
Вот мой код модели:
/*function for converting Text to Shape*/
public interface TextSerializable {
public Text toText(Text text);
public void fromText(Text text);
* Retrieve information from the given text.
* @param text The text to parse
*/
}
/*Shape Class looks something like this*/
public interface Shape extends Writable, Cloneable, TextSerializable {
/
* Returns minimum bounding rectangle for this shape.
* @return The minimum bounding rectangle for this shape
*/
public Rectangle getMBR();
/**
* Gets the distance of this shape to the given point.
* @param x The x-coordinate of the point to compute the distance to
* @param y The y-coordinate of the point to compute the distance to
* @return The Euclidean distance between this object and the given point
*/
......
......
......*/
/*My code structure*/
SparkConf conf = new SparkConf().setAppName("XYZ").setMaster("local");
JavaSparkContext sc =new JavaSparkContext(conf);
final Text text=new Text();
JavaRDD<String> lines = sc.textFile("ABC.csv");
lines.foreach(new VoidFunction<String>(){
public void call(String lines){
text.set(lines);
System.out.println(text);
}
});
/*Problem*/
text.flatMap(new FlatMapFunction<Text>(){
public Iterable<Shape> call(Shape s){
s.fromText(text);
//return void;
}
Последняя строка кода не так, но я не знаю, как это исправить. JavaRDD может использоваться с определенным пользователем классом (согласно моим знаниям). Я даже не уверен, способ, которым я преобразовал строки в текстовый текст, если это разрешено в RDD или нет. Я совершенно новый в Spark. Любая помощь будет отличной.
Спасибо много. Я понял, как это сделать. – SGh