sftp拉取数据到hive中

SFTP拉取数据至Hive教程
本文介绍如何通过SFTP从远程服务器拉取CSV文件,并将其导入Hive进行存储的具体步骤。涵盖SFTP配置、文件下载及HDFS操作等关键技术点。

sftp拉取数据到hive中

#sftp服务器地址
host=10.129.11.50
#端口
port=8888
sftp_user=user
#密码
password=passw0rd


#下载到本地的目录
localDir=/home/hive/nps/nps_dealer/${pt}/
[ ! -d $localDir ] && mkdir -p $localDir
#sftp中待下载文件目录
remoteDir=/home/appuser/report/R

#要下载的文件为fileName
fileName=nps_dealer.csv
lftp -u ${sftp_user},${password} sftp://${host}:${port}<<EOF
cd ${remoteDir}
lcd ${localDir} 
get $fileName
by
EOF

hadoop fs -mkdir /user/hive/warehouse/ods/amdlr/ods_nps_dealer_temp/pt=${pt}
hadoop fs -put -f /home/hive/nps/nps_dealer/${pt}/*  /user/hive/warehouse/ods/amdlr/ods_nps_dealer_temp/pt=${pt}

### 使用 SFTP 命令从远程服务器数据到本地 SFTP 是一种基于 SSH 的安全文件传输协议,它提供了交互式的 Shell 功能,允许用户执行复杂的文件操作[^1]。通过 SFTP 可以方便地将远程服务器上的数据传输到本地。 以下是具体的操作方法: #### 1. 连接到远程服务器 使用 `sftp` 命令登录到远程服务器,命令格式如下: ```bash sftp username@remote_host ``` 其中 `username` 是远程服务器的用户名,`remote_host` 是远程服务器的地址或域名。输入该命令后会提示输入密码,完成身份验证即可进入 SFTP 环境。 #### 2. 下载单个文件SFTP 环境中,可以使用 `get` 命令下载指定的文件到本地。例如: ```bash get /path/to/remote/file.txt /local/path/ ``` 上述命令表示从远程服务器 `/path/to/remote/` 路径下的 `file.txt` 文件下载到本地 `/local/path/` 目录下[^3]。 #### 3. 批量下载多个文件 如果需要批量下载整个目录的内容,可以使用 `-r` 参数配合 `get` 命令递归获目录中的所有文件。例如: ```bash get -r /path/to/remote/directory /local/path/ ``` #### 4. 非交互式方式数据 为了实现自动化任务,可以通过脚本调用非交互模式来完成 SFTP 数据。以下是一个示例 Bash 脚本: ```bash #!/bin/bash # 定义变量 USER="your_username" PASSWORD="your_password" IP="remote_server_ip" PORT="22" # 默认端口为22 TIME=$(date +"%Y%m%d%H") # 当前时间戳作为文件名的一部分 REMOTE_PATH="/remote/log/path/" LOCAL_PATH="/local/download/path/" # 如果目标目录不存在则创建 [ ! -d "${LOCAL_PATH}" ] && mkdir -p "${LOCAL_PATH}" # 使用lftp工具进行非交互式传输 lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF cd ${REMOTE_PATH} lcd ${LOCAL_PATH} get ${TIME}.log bye EOF ``` 此脚本实现了定时日志功能,并将其保存到本地指定路径下。 #### 5. 自动化定期清理旧数据 (可选) 为了避免占用过多磁盘空间,在实际应用中还可以加入清理机制,仅保留最近几天的历史记录。例如删除五天以前的日志文件[^4]: ```bash find ${LOCAL_PATH} -type f -mtime +5 -exec rm {} \; ``` 以上即是从远程服务器上利用 SFTP 协议数据至本地的方法及其注意事项。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值