java读取movielens数据txt
各位好,我是菜鸟小明哥,movielens数据是常见的推荐方面的开源数据集,另一个推荐方面的数据集是新闻MIND,本文将从movielens再次出发,做基础的推荐方法,比如基本的基于标题的相似性,word2vector,ALS,等等,以及NLP方面的推荐。
For deep learning QQ Second Group 629530787
I'm here waiting for you
如题,本文只说读取txt文件,java读取及spark读取为rdd
1,测试string基本属性,这样就可以与py对齐了
//相加及打印字符char
String ksc="m1k3jd";//new String("939dkkw")String bsc ="te102id0";String vsc = ksc + bsc;System.out.println(vsc);for (int ii=0;ii<vsc.length();ii++)System.out.println(vsc.charAt(ii));
//相加后返回
public static String addString(String a, String b) {
// return new String(a+b);return a+b;}
//这两种方法都可以,没发现差别
2,java一般读取方法
鉴于java没有办法设置默认参数,就不再重载设置了(再写一遍这个函数),因此不要默认参数了。另外,读取文件可能会有异常(1,找不到文件;2,解码错误),java要求
java: 未报告的异常错误java.io.IOException; 必须对其进行捕获或声明以便抛出
public static void readTXT(String file,String encoding) {File fil=new File(file);try {InputStreamReader reader = new InputStreamReader(new FileInputStream(fil), encoding);BufferedReader buffReader = new BufferedReader(reader);if (fil.isFile()&&fil.exists()){String line;while ((line= buffReader.readLine())!=null){System.out.println(line);}}}catch (FileNotFoundException e){System.out.println("file not found");}catch (UnsupportedEncodingException e) {System.out.println("encoding is not right");//throw new RuntimeException(e);} catch (IOException e) {System.out.println("reading file ups error");//throw new RuntimeException(e);}}
当我采用UTF-8进行解码发现并没有报错,我擦,而py则不行,需要"ISO-8859-1"解码。
将上面的打印行注释,其他不变,结果发现并没有上面的catch抛出,而且行数相同。都是3883
3,解析每行的数据:一般方法
最笨我直接split也就行了啊,每行存一个String数组,OJBK
String vsc3=new String("6::Heat (1995)::Action|Crime|Thriller");String res[]=vsc3.split("::");for (String resi :res)System.out.println(resi);
4, 序列化接口Serializable(可以继承这个,也可自己写)
一般是读取文件(需要预先知道数据存储格式/形式)或者保存数据,转换数据格式之用。
上面2中只是读取了一下,并没有转换格式,下面采用读取每行的细节,
public static class Serialize{private int movieId;private String title;private String tag;public Serialize(){}//构造函数public Serialize(int movieId,String title,String tag){this.movieId=movieId;this.title=title;this.tag=tag;}public static Serialize parseSerialize(String string){String[] str3=string.split("::");int movieId;String title,tag;movieId = Integer.parseInt(str3[0]);title=str3[1];tag=str3[2];return new Serialize(movieId,title,tag);}}
使用记录:
Serialize example = Serialize.parseSerialize(vsc3);System.out.println(example.movieId+","+example.title+","+example.tag);
5,spark-rdd读取
注意设置以下环境不然报错,我的是java-18 MacPro,Idea C
螺丝刀那里进去,modify options add VM options,不设置就会报错。
--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED
代码如下:也参考了这个资料
4中写的class没有问题,但在spark中如果需要读取列就不行了,因为没有写读取列的方法。如下:不写这方法,spark-rdd读取不到数据
public int getMovieId3(){return movieId;}public String getTitle3(){return title;}public String getTag3(){return tag;}
spark读取txt文件代码:
SparkConf conf = new SparkConf().setAppName("JavaALS001").setMaster("local[*]");JavaSparkContext sc = new JavaSparkContext(conf);JavaRDD<String> distFile = sc.textFile(file);JavaRDD<Serialize> rdd = distFile.map(new Function<String,Serialize>(){public Serialize call(String s) {return Serialize.parseSerialize(s);}});SQLContext sqlContext = new SQLContext(sc);Dataset<Row> df = sqlContext.createDataFrame(rdd,Serialize.class);df.show(12);
结果如下:列名是不是和上面的方法名字一样
愿我们终有重逢之时,
而你还记得我们曾经讨论的话题。
java读取movielens数据txt相关推荐
- JAVA读取Excel数据
JAVA读取Excel数据 下载 jxl.jar 导入jxl.jar 读取程序 写入Excel 写入txt 下载 jxl.jar 找到一个博主发的,下载好后去掉.zip后缀 jxl.jar下载 - 天 ...
- Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...
原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...
- Java读取Excel数据:基于Apache POI(一)
Java读取Excel数据:基于Apache POI(一) Java本身不支持直接读取微软的Excel表格数据.第三方的Apache提供了一个库POI用以支持Java读写Excel表格数据. 首先需要 ...
- 项目实战 Java读取Excel数据
项目实战 Java读取Excel数据 前言 实现步骤 导入POI依赖 示例Excel表结构 编写读取Excel工具类 实现思路 读取Excel数据工具类实现代码 取出从excel中获取的数据,并插入到 ...
- java读取二进制文件数据
java读取二进制文件数据 1.读取文件信息 java提供多种读取方式: /*** 按字节读取文件数据* @param fileName 文件路径包括文件名*/public static void r ...
- Java读取串口数据
本文主要实现读取员工刷卡信息 将淘宝买的刷卡IC卡读取器插入Windows笔记本的USB接口,安装驱动,设备管理器会自动添加一个模拟的COM3串口 本次使用的Java环境为 java version ...
- java 读取Excel数据(POI)(一个sheet或者多个sheet)
1.添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml< ...
- java 读取串口数据
串口资料 链接:https://pan.baidu.com/s/1jVO47WF7pCO6kDLezsBZ0g 提取码:hgwn 这段时间遇到了读取串口数据的需求,吭哧吭哧搞了两三天才搞出来,惭愧,所 ...
- java读取字符串,生成txt文件
/*** 读取字符串,生成txt 文件 已解决未设置编码时,在项目中直接打开文件,中文乱码问题* WriteText.writeToText(musicInfo,fileName)直接调用* * @a ...
- Java读取xml数据
xml中的代码 <?xml version="1.0" encoding="UTF-8"?><books id="aaa" ...
最新文章
- 不能跳过的《程序员的职业素养》(The Clean Coder)中的一个章节
- Greenplum添加mirror步骤
- spring连数据库的配置文件(applicationContext.xml)
- 【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)
- php有哪些开源社区,PHP开源社区
- bes配置oracle数据源,安装 ZFS 根文件系统(Oracle Solaris 初始安装)
- [LeetCode]Shortest Palindrome
- 海湾标准汉字码表查询_标准汉字码表
- Springboot入门到精通(超详细文档)
- 3、圆周运动与椭圆运动
- 微信小程序后台服务器搭建
- 米家扫地机器人尘盒怎么取_米家扫地机器人1S:从里到外全面提升 拥有超高性价比...
- 服务器flv文件播放不了,解决win2003服务器不能播放flv文件格式的问题
- 品搜妞——百度、谷狗、搜狗的女人三围
- C# Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
- AGV三种导航方式,苏州凌鸟带你走进AGV世界
- 事务压缩 对表的影响 compress for oltp
- 最初的承諾都抵不過時間的洗禮。
- 小米手机刷机和Xposed安装流程
- 滚动轮播图+滚动轮播图定时器的添加(还原lol首页的轮播图)