Я оцениваю искру с помощью базы данных marklogic. Я прочитал csv-файл, теперь у меня есть объект JavaRDD, который я должен сбрасывать в базу данных marklogic.Как написать JavaRDD в базу данных marklogic
SparkConf conf = new SparkConf().setAppName("org.sparkexample.Dataload").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> data = sc.textFile("/root/ml/workArea/data.csv");
SQLContext sqlContext = new SQLContext(sc);
JavaRDD<Record> rdd_records = data.map(
new Function<String, Record>() {
public Record call(String line) throws Exception {
String[] fields = line.split(",");
Record sd = new Record(fields[0], fields[1], fields[2], fields[3],fields[4]);
return sd;
}
});
Этот объект JavaRDD, который я хочу записать в базу данных marklogic.
Есть ли какие-либо искрообразования, доступные для быстрой записи в базу данных marklogic?
Скажем, если бы мы не могли написать JavaRDD непосредственно в marklogic, то каков правильный подход для достижения этого?
Вот код, который я использую для записи данных JavaRDD в базу данных marklogic, сообщите мне, если это неправильный способ сделать это.
final DatabaseClient client = DatabaseClientFactory.newClient("localhost",8070, "MLTest");
final XMLDocumentManager docMgr = client.newXMLDocumentManager();
rdd_records.foreachPartition(new VoidFunction<Iterator<Record>>() {
public void call(Iterator<Record> partitionOfRecords) {
while (partitionOfRecords.hasNext()) {
Record record = partitionOfRecords.next();
System.out.println("partitionOfRecords - "+record.toString());
String docId = "/example/"+record.getID()+".xml";
JAXBContext context = JAXBContext.newInstance(Record.class);
JAXBHandle<Record> handle = new JAXBHandle<Record>(context);
handle.set(record);
docMgr.writeAs(docId, handle);
}
}
});
client.release();
Я использовал Java клиент API для записи данных, но я получаю ниже исключения, даже если класс POJO Record реализует Serializable интерфейс. Пожалуйста, дайте мне знать, что может быть причиной & как решить это.
org.apache.spark.sparkexception task not Serializable.
Я не знаю много о Спарк, но вот некоторые ресурсы, которые могут помочь: [Как использовать MarkLogic в приложениях Apache Spark] (http://developer.marklogic.com/blog/marklogic-spark-example); [Установка Spark для работы с MarkLogic] (http://www.marklogic.com/resources/putting-spark-work-marklogic/). –
Спасибо Дэйв, я видел этот пример. В этом примере хранятся выходные данные в hdfs не в базе данных marklogic. – RCS