蓝月亮四肖中特

about云開發

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

打印 上一主題 下一主題

[疑問解答] spark ml推薦算法的結果是怎么保存啊

[復制鏈接]
跳轉到指定樓層
樓主
ighack 發表于 2020-1-16 08:22:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 ighack 于 2020-1-16 10:53 編輯

[Java] 純文本查看 復制代碼
Dataset<Row> userRecs = model.recommendForAllUsers(10);
            userRecs.toJavaRDD().map(new Function<Row, String>() {
                @Override
                public String call(Row row) throws Exception {
                    Integer userid = row.getInt(0);
                    String rating = "";
                    JSONObject json = new JSONObject();
                    JSONArray arr = new JSONArray();
                    json.put("UserID",userid);
                    Iterator<GenericRowWithSchema> itor =((WrappedArray)row.getAs(1)).iterator();
                    while (itor.hasNext()){
                        GenericRowWithSchema res = itor.next();
                        Integer moveid = res.getInt(0);
                        Float rat = res.getFloat(1);
                        JSONObject _data = new JSONObject();
                        _data.put("MovieID",moveid);
                        _data.put("rating",rat);
                        arr.add(_data);
                    }
                    json.put("result",arr);
                    return json.toJSONString();
                }
            }).saveAsTextFile("G:\\code\\Java\\sparkml\\src\\main\\resources\\data");

我做了一個預測以后。想要把結果保存下來
但這樣的代碼保存出來的結果有好多文件
類似
.part-00048.crc
.part-00049.crc
還有很多
part-00015
part-00016
part-00017
像part-00017這樣的文件里是結果,內容為
[AppleScript] 純文本查看 復制代碼
{"result":[{"MovieID":170,"rating":4.360397},{"MovieID":143,"rating":4.2904},{"MovieID":694,"rating":4.283311},{"MovieID":64,"rating":4.2403197},{"MovieID":213,"rating":4.119807},{"MovieID":216,"rating":4.107259},{"MovieID":69,"rating":4.069874},{"MovieID":97,"rating":4.039567},{"MovieID":318,"rating":4.0127234},{"MovieID":215,"rating":4.0114603}],"UserID":731}
{"result":[{"MovieID":313,"rating":4.123612},{"MovieID":1643,"rating":3.9563293},{"MovieID":340,"rating":3.9490104},{"MovieID":316,"rating":3.9220722},{"MovieID":483,"rating":3.9156215},{"MovieID":320,"rating":3.8911288},{"MovieID":1625,"rating":3.8898299},{"MovieID":1449,"rating":3.8802822},{"MovieID":134,"rating":3.8677},{"MovieID":1398,"rating":3.8600028}],"UserID":587}

雖然是我要的結果但文件很多。而且每個文件的結果只有只條。
為什么不是保存到幾個或者是一個文件里
.part-00049.crc這樣的文件是什么呢。和保存模型的文件很像
我怎才能保存到一個大文件里。或者保存到HDFS

[Java] 純文本查看 復制代碼
userRecs.write().json("G:\\code\\Java\\sparkml\\src\\main\\resources\\data-json");

這樣做其他也是一樣的結果
沙發
bioger_hit 發表于 2020-1-16 17:44:34 | 只看該作者
可以用這個方法:
  coalesce(1,true).saveAsTextFile()


想了解更多看下面:
一般而言,saveAsTextFile會按照執行task的多少生成多少個文件,比如part-00000一直到part-0000n,n自然就是task的個數,亦即是最后的stage的分區數。

在RDD上調用   coalesce(1,true).saveAsTextFile(),   意味著做完計算之后將數據匯集到一個分區,然后再執行保存的動作,顯然,一個分區,Spark自然只起一個task來執行保存的動作,也就只有一個文件產生了。又或者,可以調用repartition(1),它其實是coalesce的一個包裝,默認第二個參數為true。

歡迎加入about云群425860289432264021 ,云計算愛好者群,關注about云騰訊認證空間
板凳
 樓主| ighack 發表于 2020-1-17 08:21:33 | 只看該作者
bioger_hit 發表于 2020-1-16 17:44
可以用這個方法:
  coalesce(1,true).saveAsTextFile()

謝了
那像.crc的文件是什么啊
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關閉

推薦上一條 /4 下一條

QQ|小黑屋|about云開發-學問論壇|社區 ( 京ICP備12023829號 )

GMT+8, 2020-2-20 16:12 , Processed in 1.156250 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2018 Comsenz Inc.Designed by u179

快速回復 返回頂部 返回列表
蓝月亮四肖中特 北京麻将怎么打 快中彩走势图 3d试机号对应码 新疆11选5走势图360 捕鱼游戏怎么赚钱 百度雷速体育直播 麻将来了有几个版本 福建时时彩开奖号码 超级大乐透热门推选 湖南幸运赛车