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
四、数据调试篇(参数调优方略)
数据调试其实就是使用我们的测试数据进行模拟真实数据做测试,我们可以人为的选定一些特殊形式的数据来检查我们的代码健壮性。
最新文章
- [LeetCode] Word Search II 词语搜索之二
- Redis 慢速入门(一)
- Lesson 1 A private conversation
- oracle正则表达式的用法
- 统计第一个空字符前面的字符长度(java实现)
- JDBC学习笔记1
- 解决SQL命令行回退的问题
- FileZilla无法确定拖放操作的目标,由于shell未正确安装
- 方便john破解linux密码批处理
- HTTP response codes
- STL中vector,Map,Set的实现原理
- ABP入门教程
- 线程协作方法sleep、yield、wait、join
- jsp,jquery,spring mvc 实现导出文件
- 201521123056 《Java程序设计》第11周学习总结
- Django发HTML邮件
- H3C_IRF
- ES6基本使用
- shell 关于字符切割 cut
- 建立一个漂亮的PHP验证码类文件及调用方式