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. php【websocket】

    在PHP中,开发者需要考虑的东西比较多,从socket的连接.建立.绑定.监听等都需要开发者自己去操作完成,对于初学者来说,难度方面也挺大的.下面就简单介绍一下,可供参考 一.socket协议的简介 ...

  2. OSS 解锁

    一.解开LSKEYF00的编辑锁定  进入SE30,点击Tips & Tricks按钮,输入以下代码     UPDATE PROGDIR SET EDTX = ''       WHERE ...

  3. 思科交换机BGP配置

    拓扑图后期添加 交换机A配置: Console#show running-configBuilding running configuration. Please wait...!!vlan data ...

  4. EVE如何提升名望值

    目录 背景介绍 简介 名望值划分 军团名望值 利弊 背景介绍 ​ 玩eve将近3个星期,开着毒蜥级刷1级代理人任务感觉没有一点难度,想尽快刷3.4级代理任务,而我目前能够接到的最高代理任务也就才1级. ...

  5. vue3 ThreeJS 引入obj模型过暗的问题

    当我单纯地用MTLLoader引入材质, OBJLoader引入模型并添加到场景中时, 发现模型非常得暗. 需要将环境光的强度设置到3.5左右看起来才比较正常. 但正常情况下环境光的值不应该超出1.  ...

  6. JDK 7 HashMap 并发情况下的死锁问题

    目录 问题描述 详细解释 问题描述 JDK7的 HashMap 解决冲突用的是链表,在插入链表的时候用的是头插法,每次在链表的头部插入新元素.resize() 的时候用的依然是头插,头插的话,如果某个 ...

  7. 文件上传 upload-labs Pass 12-16

    Pass12 GET00%截断 审计源码 $is_upload = false; $msg = null; if(isset($_POST['submit'])){ $ext_arr = array( ...

  8. 【备忘录】 主定理 Master Theorem (转载)

    备忘录 https://zhuanlan.zhihu.com/p/113406812

  9. 刷爆 LeetCode 双周赛 100,单方面宣布第一题最难

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 上周末是 LeetCode 第 100 场双周赛,你参加了吗?这场周赛整体没有 Hard ...

  10. 王树森Transformer学习笔记

    目录 Transformer Attention结构 Self-Attention结构 Multi-head Self-Attention BERT:Bidirectional Encoder Rep ...