ラベル WebHDFS の投稿を表示しています。 すべての投稿を表示
ラベル WebHDFS の投稿を表示しています。 すべての投稿を表示

2015年1月9日金曜日

WebHDFSのREST APIでファイルをアップロードする

WebHDFSのREST APIでファイルをアップロードするには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
@Grab(group='org.apache.httpcomponents', module='httpmime', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import org.apache.http.entity.mime.*
import org.apache.http.protocol.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b"
def user = "hadoop25b"
def file = "03_2012.csv"

def context = new BasicHttpContext()
def httpclient = new DefaultHttpClient()
def datanode
httpclient.withCloseable {
  def method = new HttpPut("http://${host}:${port}/webhdfs/v1${path}/${file}?op=CREATE&user.name=${user}")

  def response = httpclient.execute(method, context)
  println response.getStatusLine().getStatusCode()
  datanode = response.getHeaders("Location")[0].value

  println "DN:" + datanode
}

httpclient = new DefaultHttpClient()
httpclient.withCloseable {
  method = new HttpPut("${datanode}")
  def builder = MultipartEntityBuilder.create()
  builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
  builder.addBinaryBody("file", new File(file))
  method.setEntity(builder.build())

  response = httpclient.execute(method)

  println response.getStatusLine().getStatusCode()
}
動作環境
Hadoop 2.5.0

2015年1月2日金曜日

WebHDFSのREST APIでファイルをダウンロードする

WebHDFSのREST APIでファイルをダウンロードするには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b"
def file = "01_2012.csv"

def httpclient = new DefaultHttpClient()
httpclient.withCloseable {

  def method = new HttpGet("http://${host}:${port}/webhdfs/v1${path}/${file}?op=OPEN&user.name=hadoop25b")
  def response = httpclient.execute(method)
  println response.getStatusLine().getStatusCode()

  new File(file).withOutputStream { os ->
    os << response.getEntity().getContent()
  }
}
動作環境
Hadoop 2.5.0

2014年12月26日金曜日

WebHDFSのREST APIでディレクトリを作成する

WebHDFSのREST APIでディレクトリを作成するには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b/newdir"
def user = "hadoop25b"

def httpclient = new DefaultHttpClient()
httpclient.withCloseable {

  def method = new HttpPut("http://${host}:${port}/webhdfs/v1${path}?op=MKDIRS&user.name=${user}")
  def response = httpclient.execute(method)
  println response.getStatusLine().getStatusCode()

  def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
  println json.boolean
}
動作環境
Hadoop 2.5.0

2014年12月19日金曜日

WebHDFSのREST APIでファイル・ディレクトリをリネームする

WebHDFSのREST APIでファイル・ディレクトリをリネームするには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b/newdir"
def newpath = "/user/hadoop25b/renameddir"
def user = "hadoop25b"

def httpclient = new DefaultHttpClient()
httpclient.withCloseable {

  def method = new HttpPut(
    "http://${host}:${port}/webhdfs/v1${path}?op=RENAME&user.name=${user}&destination=${newpath}"
  )
  def response = httpclient.execute(method)
  println response.getStatusLine().getStatusCode()

  def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
  println json.boolean
}
動作環境
Hadoop 2.5.0

2014年12月12日金曜日

WebHDFSのREST APIでファイル・ディレクトリを削除する

WebHDFSのREST APIでファイル・ディレクトリを削除するには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b/test.txt"
def user = "hadoop25b"

def httpclient = new DefaultHttpClient()
httpclient.withCloseable {

  def method = new HttpDelete(
    "http://${host}:${port}/webhdfs/v1${path}?op=DELETE&user.name=${user}"
  )
  def response = httpclient.execute(method)
  println response.getStatusLine().getStatusCode()

  def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
  println json.boolean
}
動作環境
Hadoop 2.5.0

2014年12月5日金曜日

WebHDFSのREST APIでファイルのタイプ・サイズ・オーナーなどの情報を取得する

WebHDFSのREST APIでファイルのタイプ・サイズ・オーナーなどの情報を取得するには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b"
def file = "01_2012.csv"
def user = "hadoop25b"

def httpclient = new DefaultHttpClient()
httpclient.withCloseable {

  def method = new HttpGet(
    "http://${host}:${port}/webhdfs/v1${path}/${file}?op=GETFILESTATUS&user.name=${user}"
  )
  def response = httpclient.execute(method)
  println response.getStatusLine().getStatusCode()

  def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
  def status = json.FileStatus
  println "type:${status.type}"
  println "length:${status.length}"
  println "owner:${status.owner}"
  println "group:${status.group}"
  println "permission:${status.permission}"

}
動作環境
Hadoop 2.5.0

2014年10月12日日曜日

WebHDFSのREST APIで指定のディレクトリを列挙する

WebHDFSのREST APIで指定のディレクトリを列挙するには、以下のようなコードを実行します。

サンプルプログラム
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.5')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.auth.*
import groovy.json.*

def host = "192.168.206.132" // replace this
def port = 50070
def path = "/user/hadoop25b"
def user = "hadoop25b"

def httpclient = new DefaultHttpClient()
httpclient.withCloseable {

  def method = new HttpGet(
    "http://${host}:${port}/webhdfs/v1${path}?op=LISTSTATUS&user.name=${user}"
  )
  def response = httpclient.execute(method)
  println response.getStatusLine().getStatusCode()

  def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
  for(status in json.FileStatuses.FileStatus){
    println "type:${status.type}"
    println "pathSuffix:${status.pathSuffix}"
  }
}

動作環境
Hadoop 2.5.0