Итак, я следую за Apache spark, используя руководство по Python от udemy, где он запускает искровые коды из IDE под названием Canopy.Теперь я хочу запустить коды зажигания непосредственно из командной строки, и я могу это сделать с помощью модуля findspark, но независимо от того, какой файл я запускаю, он всегда запускает один файл.Я довольно новичок в этом, поэтому я не могу понять, почему.
сейчас, когда я запускаю python movie-recommendations-als.py, он запускает этот конкретный код, когда я пытаюсь запустить счетчик оценок.Затем он также запускает фильм -recommendations-als.py
Вот два кода, которые были предоставлены в учебнике
import findspark
findspark.init("C:/spark")
import sys
from pyspark import SparkConf, SparkContext
from pyspark.mllib.recommendation import ALS, Rating
def loadMovieNames():
movieNames = {}
with open("ml-100k/uitem.txt", encoding='ascii', errors="ignore") as f:
for line in f:
fields = line.split('|')
movieNames[int(fields[0])] = fields[1]
return movieNames
conf = SparkConf().setMaster("local[*]").setAppName("MovieRecommendationsALS")
sc = SparkContext(conf = conf)
sc.setCheckpointDir('checkpoint')
print("\nLoading movie names...")
nameDict = loadMovieNames()
data = sc.textFile("file:///SparkCourse/ml-100k/u.data")
ratings = data.map(lambda l: l.split()).map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2]))).cache()
# Build the recommendation model using Alternating Least Squares
#print("\nTraining recommendation model...")
rank = 10
# Lowered numIterations to ensure it works on lower-end systems
numIterations = 6
model = ALS.train(ratings, rank, numIterations)
userID=10
print("1.My Movies\n2.My Recommendations")
if(o==1):
print("\nRatings for user ID " + str(userID) + ":")
userRatings = ratings.filter(lambda l: l[0] == userID)
for rating in userRatings.collect():
print (nameDict[int(rating[1])] + ": " + str(rating[2]))
elif(o==2):
print("\nTop 10 recommendations:")
recommendations = model.recommendProducts(userID, 10)
for recommendation in recommendations:
print ("Movie Name:"+nameDict[int(recommendation[1])] +" score " + str(recommendation[2]))
print("THIS IS THE END OF IT")
ratings-counter.py
import findspark
import os
findspark.init("C:/spark")
from pyspark import SparkConf, SparkContext
import collections
conf = SparkConf().setMaster("local").setAppName("RatingsHistogram")
sc = SparkContext(conf = conf)
lines = sc.textFile("file:///SparkCourse/ml-100k/u.data")
ratings = lines.map(lambda x: x.split()[2])
result = ratings.countByValue()
sortedResults = collections.OrderedDict(sorted(result.items()))
for key, value in sortedResults.items():
print("%s %i" % (key, value))```