使用Go语言操作HDFS
HDFS(Hadoop分布式文件系统)是Hadoop生态系统的一部分,它是一个可扩展的分布式文件系统,被设计用于在大规模数据集上运行的应用程序
安装相关package:
$ go get github.com/colinmarc/hdfs/v2
创建目录
命令:
$ hdfs dfs -mkdir <path>
示例代码:
package main
import (
"fmt"
"github.com/colinmarc/hdfs"
)
const address = "master:9000"
func main() {
client, err := hdfs.New(address)
if err != nil {
panic(err)
}
path := "/testdir"
err = client.MkdirAll(path, 0777) // 创建testdir目录
if err != nil {
panic(err)
}
fmt.Printf("Created directory: %s\n", path)
}
上传文件
命令:
$ hdfs dfs -put <localpath> <hdfspath>
示例代码:
package main
import (
"fmt"
"github.com/colinmarc/hdfs"
"io"
"os"
)
const address = "master:9000"
func main() {
client, err := hdfs.New(address)
if err != nil {
panic(err)
}
localPath := "./file.txt"
hdfsPath := "/testdir/file.txt"
// 打开本地文件
localFile, err := os.Open(localPath)
if err != nil {
panic(err)
}
defer localFile.Close()
// 创建HDFS文件
hdfsFile, err := client.Create(hdfsPath)
if err != nil {
panic(err)
}
defer hdfsFile.Close()
// 将本地文件复制到HDFS
_, err = io.Copy(hdfsFile, localFile)
if err != nil {
panic(err)
}
fmt.Printf("Uploaded file: %s\n", hdfsPath)
}
下载文件
$ hdfs dfs -get <hdfspath> <localpath>
示例代码:
package main
import (
"fmt"
"github.com/colinmarc/hdfs"
"io"
"os"
)
const address = "master:9000"
func main() {
client, err := hdfs.New(address)
if err != nil {
panic(err)
}
hdfsPath := "/test.txt"
localPath := "/home/ubuntu/workspace/hadoop/test.txt"
hdfsFile, err := client.Open(hdfsPath)
if err != nil {
panic(err)
}
defer hdfsFile.Close()
localFile, err := os.Create(localPath)
if err != nil {
panic(err)
}
defer localFile.Close()
_, err = io.Copy(localFile, hdfsFile)
if err != nil {
panic(err)
}
fmt.Printf("Downloaded file: %s\n", localPath)
}
查看文件列表
命令:
$ hdfs dfs -ls <path>
示例代码:
package main
import (
"fmt"
"github.com/colinmarc/hdfs"
)
const address = "master:9000"
func main() {
client, err := hdfs.New(address)
if err != nil {
panic(err)
}
hdfsPath := "/testdir"
files, err := client.ReadDir(hdfsPath)
if err != nil {
panic(err)
}
fmt.Printf("Files in %s:\n", hdfsPath)
for _, file := range files {
fmt.Printf("%s (size: %d)\n", file.Name(), file.Size())
}
}
删除文件
命令:
$ hdfs dfs -rm <path>
示例代码:
package main
import (
"fmt"
"github.com/colinmarc/hdfs"
)
const address = "master:9000"
func main() {
client, err := hdfs.New(address)
if err != nil {
panic(err)
}
hdfsPath := "/testdir"
err = client.Remove(hdfsPath)
if err != nil {
panic(err)
}
fmt.Printf("Deleted directory: %s\n", hdfsPath)
}
使用Go语言操作HDFS的更多相关文章
- java操作hdfs实例
环境:window7+eclipse+vmware虚拟机+搭建好的hadoop环境(master.slave01.slave02) 内容:主要是在windows环境下,利用eclipse如何来操作hd ...
- Hadoop操作hdfs的命令【转载】
本文系转载,原文地址被黑了,故无法贴出原始链接. Hadoop操作HDFS命令如下所示: hadoop fs 查看Hadoop HDFS支持的所有命令 hadoop fs –ls 列出目录及文件信息 ...
- Linux C语言操作MySQL
原文:Linux C语言操作MySQL 1.MySQL数据库简介 MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源.MySQL有以下特性: (1) 使用C和C++编写, ...
- 使用javaAPI操作hdfs
欢迎到https://github.com/huabingood/everyDayLanguagePractise查看源码. 一.构建环境 在hadoop的安装包中的share目录中有hadoop所有 ...
- 关于操作HDFS的一个问题
近日写程序定时任务调Hadoop MR程序,然后生成报表,发送邮件,当时起了两个任务A和B,调MR程序之前,会操作hdfs(读写都有),任务A每天一点跑,任务B每十分钟跑一次,B任务不会调用MR程序, ...
- 使用Java API操作HDFS文件系统
使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...
- 使用Eclipse来操作HDFS的文件
一.常用类 1.Configuration Hadoop配置文件的管理类,该类的对象封装了客户端或者服务器的配置(配置集群时,所有的xml文件根节点都是configuration) 创建一个Confi ...
- Go语言操作MySQL数据库
Go语言操作MySQL数据库 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用 ...
- Hadoop Java API操作HDFS文件系统(Mac)
1.下载Hadoop的压缩包 tar.gz https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/ 2.关联jar包 在 ...
- C语言操作WINDOWS系统存储区数字证书相关函数详解及实例
C语言操作WINDOWS系统存储区数字证书相关函数详解及实例 以下代码使用C++实现遍历存储区证书及使用UI选择一个证书 --使用CertOpenSystemStore打开证书存储区. --在循环中 ...
随机推荐
- NOIP2011普及组
T2 统计单词数 也是一道经典题 字符串匹配 #include<iostream> #include<cstdio> #include<map> #include ...
- raft算法,cap理论中的c是数据一致性,是通过raft算法,
raft算法中的两个重要概念,自旋时间,心跳时间, 领导,候选人,随从,通过日志同步.只要大多数随从同步成功,就算成功.
- OperationContext
public void Add(double x, double y) { double result = x + y; ICallback callback = OperationContext.C ...
- .NET实验二
实验名称:实验二 面向对象程序设计 一. 实验目的 1. 理解类的定义.继承等面向对象的的基本概念: 2. 掌握 C#语言定义类及其各种成员(字段,属性,方法)的方法: 3. 掌握方法覆盖的应用: 4 ...
- GoAccess - 可视化 Web 日志分析工具
Centos安装: yum -y install goaccess 使用goaccess命令生成HTML文件 LANG="en_US.UTF-8" bash -c 'goacces ...
- 1.HTML中的标签
1.HTML的基础标签 <!-- --> 表示注释 1) html语言是解释型语言,不是编译型 浏览器是容错的2) html页面中由一对标签组成:<html> ...
- F. K-th Power 容斥,莫比乌斯
F. K-th Power 传送门: 牛客:https://ac.nowcoder.com/acm/contest/34866/F cf:https://codeforces.com/group/5z ...
- 转发:基于pnpm + lerna + typescript的最佳实践
Part1 Pnpm pnpm是一款当代受欢迎 新兴(问题较多) 的包管理工具. 为什么会出现pnpm?因为yarn的出现并没有满足作者的一些期待,反而有些失望. After a few days, ...
- Postman设置Cookie参数为全局变量-环境变量设置IP参数
前提:在遇到多接口测试时,容易出现限制登录的情况 可以使用两种情况: 1.在调用其他接口前,先调用登录接口:这个方法在一般情况下可以,但是对于有些环境,比如像小程序登录时token(或cookie)是 ...
- js屏蔽开发者工具
一.屏蔽浏览器右键菜单审查元素 document.oncontextmenu = function () { return false; }; 二.屏蔽F12以及ctrl+shift+i 打开调试工具 ...