开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:Structured_Source_HDFS_生成并上传文件到 HDFS】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/692/detail/12149
Structured_Source_HDFS_生成并上传文件到 HDFS
内容介绍:
一、目标和步骤常用字段
二、代码编写
三、总结
一、目标和步骤
1.目标
通过学习 Python 的大致语法,并了解 Python 如何编写脚本完成文件的操作,其实不同的语言使用起来并没有那么难,完成一些简单的任务还是很简单的。
2.步骤
(1)创建 Python 代码文件
(2)编写代码
(3)本地测试,但是因为本地环境搭建比较浪费大家时间,所以暂时不再本地测试
二、代码编写
随便在任一目录中创建文件 gen_files.py ,编写以下内容
Import os
for index in range( 100) :
content = """
{ "name": "Michael"}
{ "name" : "Andy" , "age" :30}
{ "name" : "Justin" , "age" : 19}
file name = "lexport/dataset/text{0} .json".format (index)
with open(file_name, "w" ) as file:
file.write( content)
os.system( " lexport/lservers/hadoop/bin/hdfs dfs -mkdir -p /dataset/dataset/")
os.system( " / export/servers/hadoop/bin/hdfs dfs -put {0)
/dataset/dataset/ " .format(file_ name))
import os
(引入 os)
for index in range( 100) :
(python 在没有{ ,要表示后面的代码在循环内,使用缩进表示)
//1.文件内容
content = """
{"name":"Michael"}
{ "name":"Andy", "age":30}
{"name":"Justin", "age":19}
"""
//2.文件路径
file_name = "/export/dataset/text{0}.json".format(index)
( index 是 for 循环中的 i)
//3.打开文件,写入内容
with open(file_name,"w") as file: ①
file.write(content)
//4.执行 HDFS 命令,创建 HDFS 目录,上传到 HDFS 中
os.system("/export/servers/hadoop/bin/hdfs dfs -mkdir -p /dataset/dataset/")
(执行系统命令,/export/servers/hadoop/bin/hdfs dfs -mkdir -p /dataset/dataset/目录)
os.system( "/export/servers/hadoop/bin/hdfs dfs -put {0}
/dataset/dataset/".format(file_name ) )
字符串通过外部传入,{0} 是占位符
将文件上传到集群中
①创建文件,使用这样的写法是因为 with 是一种 Python 的特殊语法,如果使用 with 去创建文件的话,使用结束后会自动关闭流。
将文件上传到集群中,找到 apache01 ,进入用户目录下,左侧进行 Upload to current folder ,找到 Spark ,将 gen_files.py 代码传入,查看,使用 python 命令执行 gen_files.py 文件,将文件中的中文删掉,重新执行,创建文件。
执行中存在一点问题,把中文去掉保存就可以,创建文件成功
进入浏览器,搜索 node01://50070,打开目录,找 dataset ,再找 dataset ,文件生成即成功。
三、总结
1.Python 的语法灵活而干净,比较易于编写
大数据中会用到 python ,如 spark 等等工具,都可以使用 python 进行操作
2. 对于其它的语言可以玩乐性质的去使用,其实并没有很难
把文件上传到 HDFS 中,源源不断的上传,可以通过 Structured Streaming 读取文件进行流式的处理