启动hdfs
/opt/module/hadoop-3.1.3/sbin/start-dfs.sh
启动spark集群
/opt/module/spark-standalone/sbin/start-all.sh
查看集群启动情况
jpsall
注:下方标红路径根据自己实际文件位置
☀️有问题及时联系
[1] question 1-----------启动spark集群之后----------------------------------------------------
打开pyspark (python版本3.X)
bin/pyspark
// 以dataFrame形式导入json数据到spark中
{"id":1 ,"name":" Ella","age":36}
{"id":2,"name":"Bob","age":29}
{"id":3 ,"name":"Jack","age":29}
{"id":4 ,"name":"Jim","age":28}
{"id":5 ,"name":"Damon"}
{"id":5 ,"name":"Damon"}
df = spark.read.json(“file:// /home/wsf/worksapces/spark-python/datas/spark_sql_datas/employee.json”)
(1)查询DataFrame的所有数据
df.show()
(2)查询所有数据,并去除重复的数据
df.distinct().show()
(3)查询所有数据,打印时去除id字段
df.drop(“id”).show()
(4)筛选age>20的记录
df.filter(df.age > 30 ).show()
(5)将数据按name分组
df.groupBy(“name”).count().show()
(6)将数据按name升序排列
df.sort(df.name.asc()).show()
(7)取出前3行数据
df.take(3)
(8)查询所有记录的name列,并为其取别名为username
df.select(df.name.alias(“username”)).show()
(9)查询年龄age的平均值
df.agg({“age”: “mean”}).show()
(10)查询年龄age的最大值
df.agg({“age”: “max”}).show()
退出pysaprk
exit()
[2] question 2修改rddtodf1.py中文件路径,要与自己虚拟机上的数据路径保持一致
// txt文档 1,Ella,36 2,Bob,29 3,Jack,29
执行py程序,查看结果
python3 /home/wsf/worksapces/spark-python/rddtodf1.py
from pyspark.conf import SparkConf
from pyspark.sql.session import SparkSession
from pyspark import SparkContext
from pyspark.sql.types import Row
from pyspark.sql import SQLContext
if __name__ == "__main__":
sc = SparkContext("local", "Simple App")
spark = SparkSession(sc)
# 导入文本,创建RDD
peopleRDD = sc.textFile("file:///home/wsf/worksapces/spark-python/datas/spark_sql_datas/employee.txt")
# solve the question:AttributeError: 'PipelinedRDD' object has no attribute 'toDF'
sqlContext = SQLContext(sc)
# 对RDD进行切分处理,并转为DataFrame
rowRDD = peopleRDD.map(lambda line: line.split(",")).map(lambda attributes: Row(int(attributes[0]), attributes[1], int(attributes[2]))).toDF()
# 创建mysql查询的临时表
rowRDD.createOrReplaceTempView("employee")
# sql查询DataFrame
personsDF = spark.sql("select * from employee")
# 将DataFrame转为rdd,并输出到控制台
personsDF.rdd.map(lambda t: "id:" + str(t[0]) + "," + "Name:" + t[1] + "," + "age:" + str(t[2])).foreach(print)
[3] question 3
[1] 在master上导入数据库
mysql -uroot -p123 </home/wsf/worksapces/spark-python/datas/spark_sql_datas/employee.sql
有输出数据代表输出成功
# 编写脚本,直接导入数据库 # 脚本式执行sql语句 # mysql -uroot -p123


