Spark实验汇总(七个实验相结合)
日期:2020.01.20
博客期:128
星期一
一、环境搭建篇
1、安装虚拟机应用程序 VMware Workstation Pro
【编写日期:2020-01-20】
去到 官网 下载 VMware Workstation Pro
要下载这个:
【编写完毕】
2、安装Ubuntu
学习资源来源于 林子雨 老师的平台
地址:http://dblab.xmu.edu.cn/blog/285/
3、配置 hadoop环境
学习资源来源于 林子雨 老师的平台
地址:http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
4、配置spark环境
学习资源来源于 林子雨 老师的平台
地址:http://dblab.xmu.edu.cn/blog/804-2/
5、配置mysql环境
学习资源来源于 林子雨 老师的平台
参考链接:http://dblab.xmu.edu.cn/blog/install-mysql/#more-1002
6、本地 Navicat 连接外部 mysql
【编写日期:2020-01-23】
我们需要找到文件host:[文件位置:C:\Windows\System32\drivers\etc]
看看你有没有对虚拟机进行IP地址映射
如果有如图:
你就可以直接在主机名那一行写 映射对应的主机名,否则就老老实实写IP地址吧
【编写完毕】
7、虚拟机安装Eclipse +集成包配置
学习资源来源于 林子雨 老师的平台
网页地址:http://dblab.xmu.edu.cn/blog/290-2/
8、安装 Flume
参考博客:https://blog.csdn.net/qq_39839745/article/details/85278066
二、命令篇
1、Linux 基本命令汇总(大数据用的上的)
【编写日期:2020-01-20】
//----------[目录操作]
(1)、CD命令
cd /usr/local/hadoop 移动到绝对路径为 "/usr/local/hadoop"的目录下
cd ./data 移动到相对路径为 "./data"的目录下(后面也可以是 data)
cd ./../data 先返回上一级(..),再进入返回到的这一级的 data 目录下
(2)、MKDIR命令
mkdir -p /hadoop/test 递归创建目录
(3)、RMDIR命令
rmdir /usr/local/hadoop 删除空白目录
//----------[文件操作]
(4)、TOUCH命令
touch /usr/local/hadoop 新建空白文件
(5)、CAT命令
cat /usr/local/hadoop 查看文件信息(输出到控制台)
(6)、RM命令
rm -r /usr/local 删除文件夹(同 rmdir )
rm /usr/local/test.txt 删除文件
rm -f /usr/local 强制删除
(7)、CP命令
cp /usr/local/test.txt data.txt 将[前面的路径所在文件]复制到[后面的路径所在文件]中去
(8)、MV命令
mv /usr/local/test.txt data.txt 将[前面的路径所在文件]移动到[后面的路径所在文件]中去
(9)、VI (VIM)命令
vi /usr/local/test.txt 使用VI程序编写文件
vim data.txt 使用VIM程序编写文件
(VI使用方法,不过多赘述)
//----------[压缩操作]
(10)、TAR命令
tar -zcvf /usr/local/test/* deal/new.gz 将上述所有文件打包成 gz 格式的文件
tar -xvf new.gz -C /home/Downloads 将上述文件解压到指定位置
//----------[其他操作]
(11)、find 命令
find /etc -name "data.txt" 查找名称为 "data.txt"的文件
(12)、sudo 命令
sudo + 上述命令 使用 超级用户 进行操作
Linux基础操作命令
【编写完毕】
2、HDFS文件系统的使用汇总
参考博客:https://blog.csdn.net/majianxiong_lzu/article/details/89174176
3、Spark-shell命令
参考博客:https://blog.csdn.net/wawa8899/article/details/81016029
三、编程篇
1、HDFS的Java操作代码
【编写日期:2020-01-29】
本页代码仅提供参考...
能够对 HDFS 系统文件做操作的类的封装:
package com.hadoop.hdfs; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Scanner; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils; //HDFS文件处理工具
public class HDFSFileDealer {
//设定集
protected Configuration conf = null;
//文件系统
protected FileSystem fs = null;
//获取路径
protected Path toPath(String fileName) {
return new Path(fileName);
}
public static String toRealPath(String file) {
return "../../"+file;
}
//在HDFS判断是否存在文件
public boolean exist(String fileName){
try {
return fs.exists(toPath(fileName));
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
return false;
}
//从HDFS读取文件输出到控制台
public void loadToWin() {
try {
FSDataInputStream fis = fs.open(new Path("/user/hadoop/hdfstest1.txt"));
//读取文件输出到控制台
IOUtils.copyBytes(fis, System.out, conf, true);
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
}
//从HDFS读取文件,保存写入到本地
public void loadToFile(String local_file,String hdfs_file){
try {
FSDataInputStream fis = fs.open(new Path(hdfs_file));
OutputStream out = new FileOutputStream(new File(local_file));
//从HDFS读取文件,写入本地
IOUtils.copyBytes(fis, out, conf, true);
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
}
//在HDFS创建一个多级目录
public void mkdir(String newdir){
try {
Path outputDir = toPath(newdir);
if(!fs.exists(outputDir)){//判断如果不存在就删除
fs.mkdirs(toPath(newdir));
}else {
System.out.println("文件路径已经存在!");
}
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
}
//删除HDFS文件
public void delete(String fileName){
try {
if(fs.exists(toPath(fileName)))//判断如果不存在就删除
{
fs.delete(toPath(fileName),true);
} else {
System.out.println("文件路径不存在!");
}
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
}
//文件上传
public void updata(String local_file,String hdfs_file){
updata(local_file,hdfs_file,false);
}
public void updata(String local_file,String hdfs_file,boolean hasDeleted){
Path srcPath = new Path(local_file); //本地上传文件路径
Path dstPath = new Path(hdfs_file); //HDFS目标路径
//调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为false
try {
fs.copyFromLocalFile(hasDeleted, srcPath, dstPath);
} catch (IOException e) {
System.out.println("爷爷!文件加载失败,未完成上传!");
System.out.println("在updata里");
}
}
//从本地上传多个文件到HDFS
public void updata(List <String> li_str,String hdfs_file) {
try {
if(li_str==null||li_str.size()==0)
throw new IOException();
int length = li_str.size();
Path[] paths = new Path[length];
Path dstPath = new Path(hdfs_file); //HDFS目标路径
for(int i=0;i<length;++i)
{
paths[i] = toPath(li_str.get(i));
}
//调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为false
fs.copyFromLocalFile(false, true, paths, dstPath);
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
}
public void updata(String []li_str,String hdfs_file) {
try {
if(li_str==null||li_str.length==0)
throw new IOException(); int length = li_str.length;
Path[] paths = new Path[length];
Path dstPath = new Path(hdfs_file); //HDFS目标路径
for(int i=0;i<length;++i)
{
paths[i] = toPath(li_str[i]);
}
//调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为false
fs.copyFromLocalFile(false, true, paths, dstPath);
} catch (IOException e) {
System.out.println("爷爷!文件加载失败!");
}
}
//HDFS文件下载
public void download(String local_file,String hdfs_file) {
download(local_file,hdfs_file,false);
}
public void download(String local_file,String hdfs_file,boolean hasDeleted){
Path dstPath = toPath(local_file);
Path srcPath = toPath(hdfs_file);
try {
fs.copyToLocalFile(hasDeleted, srcPath, dstPath);
} catch (IOException e) {
System.out.println("爷爷!文件加载失败,未完成下载!");
}
}
//类的释放
public void free() {
try {
if(fs!=null)
fs.close();
} catch (IOException e) {
System.out.println("GrandFather ! Your program have a IOException! ");
}
}
//在HDFS创建文件并写入内容
public void touchFileWith(String fileName){
try {
FSDataOutputStream fos = fs.create(toPath(fileName));
Scanner sc = new Scanner (System.in);
String str = "";
String sum_str = "";
boolean no_error = true;
while(no_error)
{
str = sc.nextLine();
if(str.compareTo("#END#")==0)
{
fos.write(sum_str.getBytes());
break;
}
else if(sum_str.compareTo("")!=0)
{
sum_str = sum_str + "\n";
}
sum_str = sum_str + str;
}
sc.close();
} catch (Exception e) {
System.out.println("GrandFather ! Your program have a IOException! ");
}
}
//构造方法
public HDFSFileDealer(){
super();
conf = new Configuration();
conf.set("fs.defaultFS","hdfs://localhost:9000");
try {
fs = FileSystem.get(conf);
} catch (IOException e) {
System.out.println("GrandFather ! Your program have a IOException! ");
}
}
//主方法
@SuppressWarnings("unused")
public static void main(String args[]) {
int old = 0;
HDFSFileDealer hfd = new HDFSFileDealer(); String local_file = "test/buyer_favorite1";
String hdfs_file = "../../mymapreduce1/in/buyer_favorite1"; //hfd.download(local_file, hdfs_file);
//hfd.updata(local_file, hdfs_file);
//hfd.touchFileWith(hdfs_file);
hfd.updata("test/result.txt", "HiveProject/in/result.txt");
//hfd.updata("test/order_items1", "mymapreduce5/in/order_items1");
//hfd.download("test/downloads","mymapreduce1/in/buyer_favorite1"); hfd.free();
}
}
HDFSFileDealer
使用的时候,注意传递 HDFS 的根目录不是 你要输入的根目录,这个要根据你自己设定的默认目录来。
【编写完毕】
2、Scala编程汇总
这个我给大家推荐 菜鸟教程 去学习。
3、RDD编程
大家可以参考博客:https://blog.csdn.net/tsy_1222/article/details/96355531
四、数据调试篇(参数调优方略)
数据调试其实就是使用我们的测试数据进行模拟真实数据做测试,我们可以人为的选定一些特殊形式的数据来检查我们的代码健壮性。
Spark实验汇总(七个实验相结合)的更多相关文章
- 201771010126 王燕《面向对象程序设计(Java)》第七周实验总结
实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: private--私有域或私有方法:只能在定义它的类中使用 public--公 ...
- 20135302魏静静——linux课程第七周实验及总结
linux课程第七周实验及总结 实验及学习总结 1. 编译链接的过程和ELF可执行文件格式(以hello为例) GNU编译系统编译源码: 首先,运行C预处理器(cpp),将.c文件翻译成.i文件——g ...
- 20165337第七周实验报告《Java面向对象程序设计》
实验报告封面 实验内容及步骤 实验一.实现百分制成绩转成"优.良.中.及格.不及格"五级制成绩的功能 代码 public class MyUtil{ public static S ...
- 201871010126 王亚涛 《面向对象程序设计(Java)》第七周实验总结
---恢复内容开始--- 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com ...
- 第九周总结&实验报告七
小结:这周请了一天的假,所以回来的时候有些知识点跟不上,不过在第二节课学到了关于IO的知识很重要,对于这次的实验也有些吃力,这周的知识点主要集中在书上,在各种不同条件下学习运用什么样的代码. 一. ...
- 201771010123汪慧和《面向对象程序设计JAVA》第七周实验总结
一.理论部分 1.继承 如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量,如果想要在子类里面做一系列事情,应该放在父类无参构造器里面,在java中,只允许单继 ...
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
- 20165230 《Java程序设计》实验四 Android程序设计实验报告
20165230 <Java程序设计>实验四 Android程序设计实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导 ...
- 实验四 Android程序设计 实验报告 20162305李昱兴
实验四 Android程序设计 实验报告 20162305李昱兴 一.Android Studio的安装测试 1.有关该软件 Android Studio,是基于Itellij IDEA的一款流行的I ...
随机推荐
- 吴裕雄 python 神经网络——TensorFlow图片预处理
import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 使用'r'会出错,无法解码,只能以2进制形式读 ...
- 四种常见的数据结构、LinkedList、Set集合、Collection、Map总结
四种常见的数据结构: 1.堆栈结构: 先进后出的特点.(就像弹夹一样,先进去的在后进去的低下.) 2.队列结构: 先进先出的特点.(就像安检一样,先进去的先出来 ...
- 探讨 Git 代码托管平台的若干问题
关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...
- 三 模拟实现顺序表ArrayList
/** * 顺序表,重点是数组动态扩容,插入 * 底层采用数组,长度可以动态变化,此处采用增长一倍 * java.util.ArrayList每次增长50% * int newCapacity = ...
- 树莓派Ubuntu Mate 16.04 修改为国内更新源
收藏:https://blog.csdn.net/wang_shuai_ww/article/details/80386708 更换步骤以root身份打开 /etc/apt/sources.list ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...
- 小程序云函数调用http或https请求外部数据
参考网址 https://blog.csdn.net/qiushi_1990/article/details/101220920 小程序云函数调用http或https请求外部数据 原创编程小石头 发布 ...
- 【原】Google浏览器刷新
- 学习笔记(20)- Google LaserTagger
参考文章:推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger 论文地址:https://research.google/pubs/pub48542/ 开源地址:htt ...
- Ubuntu配置Python开发环境(PyCharm、Tensorflow)
安装JDK: https://www.cnblogs.com/wanghuixi/p/9837229.html 安装Anaconda: 安装PyCharm: https://www.cnblogs.c ...