我正在使用Spark来构建推荐系统原型.经过一些教程后,我能够MatrixFactorizationModel从我的数据中训练出来.
然而,Spark mllib训练的模型只是一个Serializable.如何使用此模型为真实用户推荐?我的意思是,如果用户数据增加,我怎样才能将模型保存到某种数据库中或更新它?
例如,由Mahout推荐库训练的模型可以存储到像Redis这样的数据库中,然后我们可以稍后查询推荐的项目列表.但是我们如何才能在Spark中做类似的事情呢?有什么建议吗?
recommendation-engine mahout mahout-recommender apache-spark
Elasticsearch网站上的最新博客文章正在讨论其新的1.4 beta版本的功能。
我对它们如何利用文件系统缓存非常好奇:
最新版本增加了对文档值的支持。本质上,doc值提供与内存中字段数据相同的功能,但是它们在索引时间写入磁盘。他们提供的好处是他们只占用很少的堆空间。从磁盘而不是从内存读取Doc值。虽然磁盘访问速度很慢,但是doc值受益于内核的文件系统缓存。与JVM堆不同,文件系统缓存不受32GB限制的约束。通过将字段数据从堆转移到文件系统缓存,可以使用较小的堆,这意味着可以更快地进行垃圾回收,从而获得更稳定的节点。
在此版本之前,doc值比内存中的现场数据要慢得多。此版本中的更改显着提高了性能,使其几乎与内存中的字段数据一样快。
这是否意味着我们可以操纵文件系统缓存的行为,而不是被动地等待来自操作系统的影响?如果是这样,我们如何在正常的应用程序开发中利用文件系统缓存?说,如果我正在编写Python或Java程序,该怎么做?
小程序(tiny-app)是一种非常方便且成功的丰富应用程序内容和功能的方式,它丰富应用程序生态系统的能力已经在中国得到了证明\ xe2\x80\x99s 微信和支付宝应用程序。
\n\n我们希望将此类功能嵌入到我们的应用程序中。然而,大多数可以在网络上搜索到的材料都是关于如何构建/开发小程序,而不是如何在应用程序中构建这样的框架,无论是Android还是iOS。
\n\n有没有关于如何在应用程序中构建小程序框架的资料/文档?(不是如何构建小程序)
\n有时我们可以看到点击一些"共享"按钮后,会显示一个可共享方式列表.该列表似乎是动态生成的,而不是硬编码的.
例如,我在手机上安装了SpringPad,一些应用程序的共享功能可以通过SpringPad共享内容,但是怎么知道我有SpringPad?
如何实现这样的功能?谢谢.
任何人都可以解释两种getView()实现之间的区别是什么?
第一个只是检查是否convertView为null; 如果它为null,则膨胀一个新的View对象.然后使用适当的值设置子视图.
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if(convertView == null)
{
LayoutInflater inflater = context.getLayoutInflater();
convertView = inflater.inflate(R.layout.itemlayout, null, true);
}
ImageView image = (ImageView) convertView.findViewById(R.id.icon);
TextView text = (TextView) convertView.findViewById(R.id.name);
MyItem item = items[position];
text.setText(item.name);
if("male".equals(item.gender))
{
image.setImageResource(R.drawable.male);
}
else if("female".equals(item.gender))
{
image.setImageResource(R.drawable.female);
}
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
第二个是所谓的"ViewHolder"模式.许多开发人员说这种方法可以节省大量内存和CPU时间.但第一个实现也检查convertView的存在.第一种方法不能节省一些内存吗?谁能更深入,更清楚地解释这两种实现之间的区别?非常感谢.
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
View itemView = convertView;
if(itemView == null)
{
LayoutInflater inflater = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个简单的推荐系统,并尝试进行一些计算,如SVD,RBM等.
为了更有说服力,我将使用Movielens或Netflix数据集来评估系统的性能.但是,这两个数据集都有超过100万用户和超过1万个项目,所以不可能将所有数据都放入内存.我必须使用一些特定的模块来处理这么大的矩阵.
我知道在一些SciPy的工具可以处理这个问题,并divisi2所使用的python-recsys也似乎是一个不错的选择.或者也许有一些我不知道的更好的工具?
我应该使用哪个模块?有什么建议吗?
在Java中,我可以使用以下两个语句将字符串转换为整数,这可以处理异常:
// we have some string s = "abc"
int num = 0;
try{ num = Integer.parseInt(s); } catch (NumberFormatException ex) {}
Run Code Online (Sandbox Code Playgroud)
但是,我在Scala中找到的方法总是使用try-catch/match-getOrElse如下的方法,它包含几行代码,看起来有点冗长.
// First we have to define a method called "toInt" somewhere else
def toInt(s: String): Option[Int] = {
try{
Some(s.toInt)
} catch {
case e: NumberFormatException => None
}
}
// Then I can do the real conversion
val num = toInt(s).getOrElse(0)
Run Code Online (Sandbox Code Playgroud)
这是在Scala中将字符串转换为整数的唯一方法(能够处理异常)还是有更简洁的方法?
我对如何制作/自定义 JSON 响应的这个问题进行了一些调查。有一些方法可以做到这一点:
在 Grails 中制作/自定义 JSON 响应的最佳方法是什么?或者有没有其他方法可以更好地做到这一点?
谢谢:)
我正在评估ElasticSearch所需的必要存储大小.但是,我发现在索引同一组数据时,商店大小每次都会变化.
例如,我使用的数据大小为35mb.索引运行了几次,结果存储大小介于76mb~85mb之间,不是固定数字(不可重复?)
有人可以解释一下吗?提前致谢:)
我正在尝试使用Spark RDD进行一些文本处理.
输入文件的格式为:
2015-05-20T18:30 <some_url>/?<key1>=<value1>&<key2>=<value2>&...&<keyn>=<valuen>
Run Code Online (Sandbox Code Playgroud)
我想从文本中提取一些字段并将它们转换为CSV格式,如:
<value1>,<value5>,<valuek>,<valuen>
Run Code Online (Sandbox Code Playgroud)
以下代码是我如何做到这一点:
val lines = sc.textFile(s"s3n://${MY_BUCKET}/${MY_FOLDER}/test/*.gz")
val records = lines.map { line =>
val mp = line.split("&")
.map(_.split("="))
.filter(_.length >= 2)
.map(t => (t(0), t(1))).toMap
(mp.get("key1"), mp.get("key5"), mp.get("keyk"), mp.get("keyn"))
}
Run Code Online (Sandbox Code Playgroud)
我想知道,如果输入文本的某些行格式错误或无效,则该map()函数无法返回有效值.这在文本处理中应该很常见,处理这个问题的最佳做法是什么?