java api在apacherill中添加存储插件

标签 java apache-drill

我想使用 java 代码添加一个新的存储插件。目前我正在创建一个 json 文件并将其上传到drill web ui 上。但它失败了。这是我的代码

def creatplugin() {
   val httpclient = new DefaultHttpClient()
    val httpPost = new HttpPost("http://ip:port/storage/hdfs1.json")
    val uploadFilePart = new FileBody(new File("D:/plugin.json"))
    val reqEntity = new MultipartEntity()
    reqEntity.addPart("hdfs1.json", uploadFilePart)
    httpPost.setEntity(reqEntity)
    httpPost.setHeader("Content-type", "application/json")
    val response = httpclient.execute(httpPost)
    println(response.getStatusLine().getStatusCode())
  }

在这种情况下,响应代码为 400,请求错误。

有什么建议吗,出了什么问题?有没有其他方法可以使用java代码而不是rest api动态添加插件?

谢谢

最佳答案

正如吉姆所指出的,问题是多部分实体。这是工作代码

def creatplugin() {
    val source = scala.io.Source.fromFile("D:/plugin.json").mkString
    val httpclient = new DefaultHttpClient()
    val httpPost = new HttpPost("http://ip:port/storage/hdfs1.json")
    val reqEntity = new StringEntity(source)
    httpPost.setEntity(reqEntity)
    httpPost.setHeader("content-type", "application/json")
    httpPost.setHeader("Accept", "application/json")
    val response = httpclient.execute(httpPost)
    println(response.getStatusLine().getStatusCode())
  }

关于java api在apacherill中添加存储插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340731/

相关文章:

java - wsimport 绑定(bind) xsd :int to Integer instead of int

java - 仅当新属性大于现有属性时 DynamoDb 更新项目

apache-drill - Apache Drill 中的 WHERE filename 对所有文件进行全面扫描

hadoop - Apache Drill 的性能

mysql - 如何仅在字段计数等于 1 的情况下从 sql 连接回填数据,同时维护先前连接的记录?

apache - 如何运行 Apache Drill(drill-embedded)并关闭终端?

java - 动态获取java包中实现接口(interface)的每个类

java - 如何处理NumberFormatException : null in Java to cancel and exit the program

java - java从xml文档接收子节点

sql - 从Apache Drill查询Hive导致Stackoverflow错误