这是微博深度和广度预测的原始代码,写了大约半个月,第一个版本不是这样的,但是这个版本包含所有需要的功能。
模块化的程度也更高。找工作前一直想用python完美解决这个问题,后来发现自己的方法和硬件都有很大的局限。
算是我的第一次正儿八经的尝试在分布式计算的框架下,计算海量的数据。
意识到很多问题,影响我面试时候很多的代码风格。
def get_basic_info(): win_path = "E:/spark/weibo_predict/" linux_path = "/home/jason/spark/weibo_predict/" path = linux_path train_path = path + 'train/' test_path = path + 'test/' code_path = path + 'source_code/' print(' 训练准备文件保存路径px:%s' % train_path) print(' 测试准备文件保存路径py:%s' % test_path) print(' 代码准备文件保存路径pz:%s' % code_path) train_weibo_raw_path = path + "train_weibo_raw.txt" train_weibo_repost_path = path + "train_weibo_repost_back.txt" test_weibo_raw_path = path + "test_weibo_raw.txt" test_weibo_repost_path = path + "test_weibo_repost.txt" user_relations_path = path + "user_relations_back.txt" print(" 训练原始微博地址p1:%s" % train_weibo_raw_path) print("训练转发微博地址p2:%s" % train_weibo_repost_path) print(" 测试原始微博地址p3:%s" % test_weibo_raw_path) print("测试转发微博地址p4:%s" % test_weibo_repost_path) print(" 用户关系地址p5:%s" % user_relations_path) return train_path,test_path,code_path,train_weibo_raw_path,train_weibo_repost_path,test_weibo_raw_path,test_weibo_repost_path,user_relations_path
#传递 训练(原始微博,转发微博) 或者 测试(原始微博,转发微博) #返回化简后的对应关系repost_id_line_time_reduce #返回微博id对应的用户idwid_uid_rdd from pyspark import SparkContext def get_prime_rdd(train_or_test,sc, p1,p2,p3,p4): if train_or_test == 'train': inside_path_a = p1 inside_path_b = p2 elif train_or_test == 'test': inside_path_a = p3 inside_path_b = p4 else: print("only input train or test") return 0,0 sc = sc train_weibo_raw_data = sc.textFile(inside_path_a) train_weibo_raw_data_count = train_weibo_raw_data.count() train_weibo_raw_data_rdd = train_weibo_raw_data.map(lambda x: x.split("