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的更多相关文章

  1. java操作hdfs实例

    环境:window7+eclipse+vmware虚拟机+搭建好的hadoop环境(master.slave01.slave02) 内容:主要是在windows环境下,利用eclipse如何来操作hd ...

  2. Hadoop操作hdfs的命令【转载】

    本文系转载,原文地址被黑了,故无法贴出原始链接. Hadoop操作HDFS命令如下所示: hadoop fs 查看Hadoop HDFS支持的所有命令 hadoop fs –ls 列出目录及文件信息 ...

  3. Linux C语言操作MySQL

    原文:Linux C语言操作MySQL 1.MySQL数据库简介 MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源.MySQL有以下特性: (1) 使用C和C++编写, ...

  4. 使用javaAPI操作hdfs

    欢迎到https://github.com/huabingood/everyDayLanguagePractise查看源码. 一.构建环境 在hadoop的安装包中的share目录中有hadoop所有 ...

  5. 关于操作HDFS的一个问题

    近日写程序定时任务调Hadoop MR程序,然后生成报表,发送邮件,当时起了两个任务A和B,调MR程序之前,会操作hdfs(读写都有),任务A每天一点跑,任务B每十分钟跑一次,B任务不会调用MR程序, ...

  6. 使用Java API操作HDFS文件系统

    使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...

  7. 使用Eclipse来操作HDFS的文件

    一.常用类 1.Configuration Hadoop配置文件的管理类,该类的对象封装了客户端或者服务器的配置(配置集群时,所有的xml文件根节点都是configuration) 创建一个Confi ...

  8. Go语言操作MySQL数据库

    Go语言操作MySQL数据库 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用 ...

  9. Hadoop Java API操作HDFS文件系统(Mac)

    1.下载Hadoop的压缩包 tar.gz   https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/ 2.关联jar包 在 ...

  10. C语言操作WINDOWS系统存储区数字证书相关函数详解及实例

     C语言操作WINDOWS系统存储区数字证书相关函数详解及实例 以下代码使用C++实现遍历存储区证书及使用UI选择一个证书 --使用CertOpenSystemStore打开证书存储区. --在循环中 ...

随机推荐

  1. LeetCode 之 111. 二叉树的最小深度

    原题链接 思路: 递归计算每个子树的深度,返回左右子树中深度小的值: 由于题目中要求的是到最近叶子节点的深度,所以需要判断 左右子树为空的情况: python/python3: class Solut ...

  2. 盒子模型和CSS背景和列表

    盒子模型(1)宽度-width:长度值 | 百分比 | auto-max-width:长度值 | 百分比 | auto-min-width:长度值 | 百分比 | auto(2)高度-height:长 ...

  3. 9.29 2020 实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令

    一.实验目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解调 ...

  4. 鲁迅文集 第3卷 而已集 华盖集续编 华盖集 热风\四十一.md

    目录 导读 正文 导读 本篇首次发表于1919年1月15日<新青年>第六卷第一号.署名唐俟.   文章以生物进化的事实,驳斥旧势力对改革者的嘲讽,号召青年蔑视反改革者的冷笑和暗箭,&quo ...

  5. 修改word文档中已有的批注者名称

    前言 https://blog.csdn.net/hyh19962008/article/details/89430548 word中可以通过修改用户的信息实现新建的批注者显示不同的名称,但是对于文档 ...

  6. POI设置单元格下拉框

    一.导出 Excel 单元格设置下拉框 日常开发中,导出基础数据为模版,填充信息后导入时,有时候会要求某些导入项应该为下拉框选择,一个是为了规范数据,也可以简化填充. 1.1 单元格下拉框选项总字符较 ...

  7. NX二次开发 批量导出X_T(包括部件里的装配体)

    VS2019 NX1946 UF_initialize(); string filepath = strDir + "\\";//拼接路径 //获取图层过滤 PropertyLis ...

  8. luffy项目settings

    一:  二:. 设置调整 1.修改manage.py配置路径 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyApi.settings.de ...

  9. php 中 session存储

    转载网址: https://blog.csdn.net/miliu123456/article/details/107048378/ php 中 session 更换存储方式(file, redis, ...

  10. MySQL学习(十一)B树与B+树了解

    参考博客:https://www.cnblogs.com/kismetv/p/11582214.html