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. Vue3+Vite项目中 使用WindiCSS.

    之前工作有了解过根据类名来写元素的样式,一听就发出疑问:这样写项目可读性恐怕不是很好吧... 之后来到杭州工作后,开始使用WindiCSS后发现 真香!!!  由于近期所写的项目都是自己一个人开发的 ...

  2. ABP vNext微服务架构详细教程——镜像推送

    1. Jenkins搭建 为实现容器化部署,我们需要将代码打包成镜像并推送至容器仓库,我们可以选择自建容器仓库或者使用公有云服务商提供的镜像仓库.这里我们使用阿里云提供的免费镜像仓库. 代码打包和镜像 ...

  3. error check

    #define SYSTEM_PRTCT_NOERR 0 #define SYSTEM_PRTCT_COVER (1 << 0) /* */#define SYSTEM_PRTCT_LPH ...

  4. springBoot的全局异常处理

    GlobalException.java package com.bank.util; import com.bank.exception.ContentEmpyException; import c ...

  5. abp框架+mysql 数据库 执行批量新增和修改

    protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken. ...

  6. 安卓自动化查看包名和activity名的方法

    1,cmd下,adb shell "dumpsys window | grep mCurrentFocus" 2,CMD中输入adb logcat ActivityManager: ...

  7. QImageReader(Writer)支持格式变少的解决方法

    首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 获取程序支持的图片格式: #include "mainwindow.h" #include ...

  8. 2.27总结——JDBC学习

    今天初步了解了Javaweb的JDBC,了解其基础语句,以及连接数据库的方式,但是自我感觉很抽象,实际上手仍有些困难,需要参考模板,增删改查目前进度在增和查,继续努力,争取本学期尽快跟上同学学习进度!

  9. OSPF V3协议简介

     LSA1/LSA 2在ospfv3中,变成了只携带拓扑信息,区域内的路由信息注意到LSA 9中

  10. 比 poi导入导出更好用的 EasyExcel使用小结

    转载请注明出处: 官方文档: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read 1.简洁 Java解析.生成E ...