当前位置: 首页 > 工具软件 > jupyter-fs > 使用案例 >

Linux--hadoop--jupyter-----27

佟阳焱
2023-12-01

hadoop fs -mkdir -p /user/hadoop  创建一个目录

hadoop fs -rm-r /user/hadoop  删除目录

hadoop fs -put data.txt  上传文件

hadoop fs -cat  data.txt   查看文件

exit() 退出
source 更新

start-dfs.sh 启动hadoop   三个Node

start-yarn.sh   两个Manager

jupyter notebook --ip python5  虚拟机里退出jupyter   Ctrl+c

在丘比特网址写代码,先运行环境代码

import os
import sys
spark_home = os.environ.get('SPARK_HOME',None)
if not spark_home:
    raise ValueError('SPARK_HOME enviroment variable is not set')
sys.path.insert(0,os.path.join(spark_home,'python'))
sys.path.insert(0,os.path.join(spark_home,'python/lib/py4j-0.10.4-src.zip'))
exec(open(os.path.join(spark_home,'python/pyspark/shell.py')).read())

等出现welcome to 就OK了,就可以在下面的框里面写代码了



map 将数据打散成你想要的格式

reduce 根据键值对进行统计

hadoop 存贮数据  MapReduce分析数据

hadoop是建立在yarn(集群)上

hadoop做Wordcount

用hadoop自带的MapReduce做数据分析

在hadoop根路径进文件

/hadoop-2.7.6/share/hadoop/mapreduce/有一个jar包  hadoop-mapreduce-examples-2.7.6.jar

**上传文件  hadoop fs -put 文件名   如果不在根目录下,需要在文件名前加~/

hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /user/hadoop/data.txt /user/output
(通过调用上面的jar包 单词统计这个文件  将结果放在这个文件里)

通过命令查看hadoop fs -cat /user/output/part-r-00000

在hadoop上输spark-shell命令 出来Scala界面,(scala和hadoop都是java为基础)
输出一句话是println()
区分大小写:类名第一个字母大写;方法名称第一个字母小写 
注释 /**/   //
面向行的语言,以;结束或换行。
常量是 val    变量var  声明时要给出数据类型
var myVar :String=“foo”

变量可以修改值 ,常量不能修改值

循环
if(布尔表达式)
while循环
do……while循环
for循环
<-  相当于Python循环中的in
1 to 10 是全输出
1 until 10  不输出10


Scala写法
var lines=sc.textFile("hdfs://python5:9000/user/hadoop/data.txt")这是文件的路径
定义变量

浏览器 http://python5:8088/cluster

拆分:
map本身带循环
lines.map(x=>x.split("  ").collect())

lines.map(x=>x.split("  ")).map(x=>for(i <- x)println(i)).collect()
将文件每个单词以空格分开输出

lines.map(x=>x.split("  ")).flatMap(x=>for(i <- x)yield(i,1)).collect()

将上面的三个数组 整合成一个数组

lines.map(x=>x.split("  ")).flatMap(x=>for(i <- x)yield(i,1)).groupByKey().collect()

只是键分组,并没统计

lines.map(x=>x.split(' ')).flatMap(x=>for(i <- x)yield(i,1)).groupByKey().map(x=>println(x._1,x._2.sum)).collect()
x._1第一个元素    在第二个时调用sum,可以统计第一个元素出现次数

lines.map(x=>x.split("  ")).flatMap(x=>for(i <- x)yield(i,1)).reduceByKey((x,y)=>x+y).collect()

通过 reduceByKey wordcount

 类似资料: