刚考完spark高级,只记得四道大题,另一道忘记了,大家有需要可以参考一下;我的资源里面也有一些关于Spark的资料和试题,感兴趣的可以看一下。
1、将含有“spark”的 lable 标记为1,否则标记为0。
训练数据
train:
id text label
0 "a b c d e spark" 1.0
1 "b d" 0.0
2 "spark f g h" 1.0
3 "hadoop mapreduce" 0.0
测试数据
text:
id text
4 "spark i j k"
5 "l m n"
6 "spark hadoop spark"
7 "apache hadoop"
from pyspark.ml.feature import Tokenizer
from pyspark.ml.feature import HashingTF
from pyspark.ml.classification import LogisticRegression
from pyspark.ml import Pipeline
# 1.训练数据集(含标签)
training = spark.createDataFrame([
(0, "a b c d e spark", 1.0),
(1, "b d", 0.0),
(2, "spark f g h", 1.0),
(3, "hadoop mapreduce", 0.0)
], ["id", "text", "label"])
# 2.配置一个pipeline管道,包括转换器和评估器
tokenizer = Tokenizer(inputCol="text", outputCol="words") #分词
hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(), outputCol="features") #hash分桶及词频率
统计
lr = LogisticRegression(maxIter=10, regParam=0.001) #逻辑回归算法
pipeline = Pipeline(stages=[tokenizer, hashingTF, lr])
# 3.用管道训练出模型
model = pipeline.fit(training)
# 4.测试数据(不含label标签)
test = spark.createDataFrame([
(4, "spark i j k"),
(5, "l m n"),
(6, "spark hadoop spark"),
(7, "apache hadoop")
], ["id", "text"])
# 5.用测试数据来预测
prediction = model.transform(test)
# 6.打印出感兴趣的列
selected = prediction.select("id", "text", "prediction")
for row in selected.collect():
rid, text, prediction = row
print("(%d, %s) --> prediction=%f" % (rid, text, prediction))
2、预测婴儿生存机会实验(可以参考下面这篇文章)
PySpark入门二十:ML预测婴儿生存几率--逻辑回归实践_enco=onehotencoder(inputcol='birth_place_int',outp_Roc Huang的博客-CSDN博客
4、读取book.txt文档,该文档从左到右的字段依次为“图书编号、图书名称、图书评级、图书价格、图书出版社、图书网址”,要求根据该文档内容生成DataFrame,并查询该文档前50行的信息。(推荐字段名称“id、name、price、publish、rating、url”)
from pyspark.sql import Row
#读取数据
book=spark.read.text("file:///home/ub01/data/book.txt")
#将book的DataFrame转换为RDD操作
book_rdd=book.rdd.map(lambda x:x[0].split(",")).map(lambda x:Row(id=x[0],name=x[1],rating=x[2],price=x[3],publish=x[4],url=x[5]))
#创建dataFrame
book_df=spark.createDataFrame(book_rdd)
#查询前50行
book_df.show(50)
5、根据第4题的book.txt文档,分组统计出版社的数量(只展示前10条),并且统计书名包含“微积分”的书的数量。
#分组统计出版社的数量
book_df.groupBy('publish').count().show()
#统计书名包含“微积分”的书的数量
spark.sql("select count(*) counts from book_table where name like '%微积分%'").show()