web-services - 将 Spark RDD 上传到 REST webservice POST 方法

标签 web-services scala rest hadoop apache-spark

坦率地说,我不确定这个功能是否存在?抱歉

我的要求是每天将 spark 分析数据发送到文件服务器,文件服务器支持通过 SFTP 和 REST Webservice post 调用进行文件传输。

最初的想法是将Spark RDD保存到HDFS,通过SFTP传输到文件服务器。 我想知道是否可以通过从 spark 驱动程序类调用 REST 服务直接上传 RDD 而无需保存到 HDFS。 数据大小小于2MB

抱歉我的英语不好!

最佳答案

Spark 没有特定的方法来做到这一点。对于这种数据大小,通过 HDFS 或其他类型的存储是不值得的。您可以在驱动程序的内存中收集该数据并直接发送。对于 POST 调用,您可以只使用普通的旧 java.net.URL,它看起来像这样:

import java.net.{URL, HttpURLConnection}

// The RDD you want to send
val rdd = ???

// Gather data and turn into string with newlines
val body = rdd.collect.mkString("\n")

// Open a connection
val url = new URL("http://www.example.com/resource")
val conn = url.openConnection.asInstanceOf[HttpURLConnection]

// Configure for POST request
conn.setDoOutput(true);
conn.setRequestMethod("POST");

val os = conn.getOutputStream;
os.write(input.getBytes);
os.flush;

可以在 this question 找到关于使用 java.net.URL 的更完整的讨论。 .您还可以使用 Scala 库来为您处理丑陋的 Java 内容,例如 akka-httpDispatch .

关于web-services - 将 Spark RDD 上传到 REST webservice POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35615102/

相关文章:

scala - 没有可用于 T 的 ClassTag -- 不适用于 Array

scala - uPickle 和 ScalaJS : sealed trait serialisation

scala - ScalaCheck 的 Gen.pick 真的是随机的吗?

python - 在 callbackURL 端点从 Google Glass 获取 "REPLY"通知

rest - 通过 REST API [MapR 6.1/Hadoop-2.7] 从 Yarn 查询节点标签拓扑

c# - SQL CLR Web 服务调用 : Limiting Overhead

php - 基于 PHP 的站点上基于 Telegram 的聊天 : HOWTO?

rest - 如何在RESTful API设计中处理错误数据类型和响应消息

java - WSDL 到 java 转换失败

xml - XML-RPC 和 SOAP 之间有什么区别?