如何将文件从本地服务器位置移动到hdfs?

时间:2018-08-09 21:19:04

标签: python hadoop hdfs

我的服务器上的某个位置有一个文件

/user/data/abc.csv

我需要在文件中的此数据之上创建一个配置单元表。所以我需要将此文件移到hdfs位置

/user/hive/warehouse/xyz.db

我们如何使用python做到这一点?

2 个答案:

答案 0 :(得分:0)

首先,您需要从服务器检索文件。使用此pyhton代码将其检索到本地计算机。

rows: {
  afterTemplate: function(row, data, index) {
    $('#delete-confirmation-dialog-' + data._id).on('click', function() {
      $.confirm({
        title: 'Delete?',
        content: 'Are you sure?',
        icon: 'fa fa-question-circle',
        animation: 'scale',
        closeAnimation: 'scale',
        opacity: 0.5,
        buttons: {
          'confirm': {
            text: 'Delete',
            btnClass: 'btn-red',
            action: function() {
              $.confirm({
                content: function() {

                  this.setTitle('Result');
                  this.setContent('Process...');

                  return $.ajax({
                    url: Urlapi + '/event/remove/' + data._id,
                    // headers: _self.jwt(),
                    dataType: 'json',
                    method: 'patch'
                  }).done(function(response) {
                    this.setContentAppend('<div>Done!</div>');
                    ( < any > $('.m_eventdatatable')).mDatatable('reload');
                  }).fail(function() {
                    this.setContentAppend('<div>Fail!</div>');
                  });
                },
              });
            }
          },
          cancel: function() {
            $.alert('Record canceled to delete');
          },
        }
      });
    });
  },
},

一旦文件下载到本地,则执行常规的配置单元查询以从本地加载数据或将数据放入HDFS,然后加载至配置单元。

直接从本地将数据加载到配置单元:

import ftplib

path = '/user/data/'
filename = 'abc.csv'

ftp = ftplib.FTP("Server IP") 
ftp.login("UserName", "Password") 
ftp.cwd(path)
ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write) #Download the file from server to local on same path.
ftp.quit()

将数据加载到HDFS:

LOAD DATA local INPATH '/user/data/abc.csv' into table <table name>; 

然后使用配置单元查询将其加载到配置单元。

hadoop fs -copyFromLocal ~/user/data/abc.csv /your/hdfs/path

答案 1 :(得分:-1)

hadoop fs -put命令可用于将文件从本地文件系统放入HDFS。