Exemplo n.º 1
0
func changeMod(fs *gowfs.FileSystem, hdfsPath string) {
	shell := gowfs.FsShell{FileSystem: fs}
	_, err := shell.Chmod([]string{hdfsPath}, 0744)
	if err != nil {
		log.Fatal("Chmod() failed for ", hdfsPath, ": ", err.Error())
	}
	stat, err := fs.GetFileStatus(gowfs.Path{Name: hdfsPath})
	if err != nil {
		log.Fatal("Unable to validate Chmod() operation: ", err.Error())
	}
	if stat.Permission == "744" {
		log.Println("Chmod for ", hdfsPath, " OK ")
		ls(fs, hdfsPath)
	} else {
		log.Fatal("Chmod() failed.")
	}
}
Exemplo n.º 2
0
func changeGroup(fs *gowfs.FileSystem, hdfsPath string) {
	shell := gowfs.FsShell{FileSystem: fs}
	_, err := shell.Chgrp([]string{hdfsPath}, "superduper")
	if err != nil {
		log.Fatal("Chgrp failed for ", hdfsPath, ": ", err.Error())
	}
	stat, err := fs.GetFileStatus(gowfs.Path{Name: hdfsPath})
	if err != nil {
		log.Fatal("Unable to validate chgrp() operation: ", err.Error())
	}
	if stat.Group == "superduper" {
		log.Println("Chgrp for ", hdfsPath, " OK ")
		ls(fs, hdfsPath)
	} else {
		log.Fatal("Chgrp() failed.")
	}
}
Exemplo n.º 3
0
func changeOwner(fs *gowfs.FileSystem, hdfsPath string) {
	shell := gowfs.FsShell{FileSystem: fs}
	_, err := shell.Chown([]string{hdfsPath}, "owner2")
	if err != nil {
		log.Fatal("Chown failed for ", hdfsPath, ": ", err.Error())
	}
	stat, err := fs.GetFileStatus(gowfs.Path{Name: hdfsPath})
	if err != nil {
		log.Fatal("Unable to validate chown() operation: ", err.Error())
	}
	if stat.Owner == "owner2" {
		log.Println("Chown for ", hdfsPath, " OK ")
		ls(fs, hdfsPath)
	} else {
		log.Fatal("Chown() failed.")
	}
}
Exemplo n.º 4
0
func moveRemoteFileLocal(fs *gowfs.FileSystem, remoteFile string) {
	log.Println("Moving Remote file!!")
	shell := gowfs.FsShell{FileSystem: fs}
	remotePath, fileName := path.Split(remoteFile)
	_, err := shell.MoveToLocal(remoteFile, fileName)
	if err != nil {
		log.Fatal("MoveToLocal() failed: ", err.Error())
	}
	file, err := os.Open(fileName)
	if err != nil {
		log.Fatal("MoveToLocal() - local file can't be open. ")
	}
	defer file.Close()
	defer os.Remove(file.Name())

	_, err = fs.GetFileStatus(gowfs.Path{Name: remoteFile})
	if err == nil {
		log.Fatal("Expecing a FileNotFoundException, but file is found. ", remoteFile, ": ", err.Error())
	}
	log.Printf("Remote file %s has been removed Ok", remoteFile)
	ls(fs, remotePath)
}
Exemplo n.º 5
0
func appendToRemoteFile(fs *gowfs.FileSystem, localFile, hdfsPath string) {
	stat, err := fs.GetFileStatus(gowfs.Path{Name: hdfsPath})
	if err != nil {
		log.Fatal("Unable to get file info for ", hdfsPath, ":", err.Error())
	}
	shell := gowfs.FsShell{FileSystem: fs}
	_, err = shell.AppendToFile([]string{localFile}, hdfsPath)
	if err != nil {
		log.Fatal("AppendToFile() failed: ", err.Error())
	}

	stat2, err := fs.GetFileStatus(gowfs.Path{Name: hdfsPath})
	if err != nil {
		log.Fatal("Something went wrong, unable to get file info:", err.Error())
	}
	if stat2.Length > stat.Length {
		log.Println("AppendToFile() for ", hdfsPath, " OK.")
		ls(fs, hdfsPath)
	} else {
		log.Fatal("AppendToFile failed. File size for ", hdfsPath, " expected to be larger.")
	}
}
Exemplo n.º 6
0
func uploadTestFile(fs *gowfs.FileSystem, testFile, hdfsPath string) string {
	file, err := os.Open(testFile)
	if err != nil {
		log.Fatal("Unable to find local test file: ", err)
	}
	stat, _ := file.Stat()
	if stat.Mode().IsDir() {
		log.Fatal("Data file expected, directory found.")
	}
	log.Println("Test file ", stat.Name(), " found.")

	shell := gowfs.FsShell{FileSystem: fs}
	log.Println("Sending file ", file.Name(), " to HDFS location ", hdfsPath)
	ok, err := shell.Put(file.Name(), hdfsPath, true)
	if err != nil || !ok {
		log.Fatal("Failed during test file upload: ", err)
	}
	_, fileName := path.Split(file.Name())
	log.Println("File ", fileName, " Copied OK.")
	remoteFile := hdfsPath + "/" + fileName
	ls(fs, remoteFile)

	return remoteFile
}