我正在努力让一个简单的sparkR示例启动并运行,并且无法使其工作。我想做的就是获取一个列表,并行化并在SparkR中运行一个函数。我还没有能够找到一个简单的例子,它在火花1.6中实现了这个目的 - 似乎有很多方法可以做到这一点,但它们似乎都不起作用。我试图在sparkR控制台中运行它:
public class MainActivity extends AppCompatActivity {
String userIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String a = "Hello from";
String b = "the other";
String c = "SIDE!";
String d = "What you don't like Adele?";
final EditText editText = (EditText) findViewById(R.id.editText);
TextView textView = (TextView) findViewById(R.id.viewText);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
private void sendMessage() {
userIn = editText.getText().toString();
}
});
}
这是我在调用lapply时遇到的错误:
fxntest<- function(i){
m = matrix(runif(4000*4000),4000)
return(system.time(m %*% m))
}
a<-c(1,1,1,1,1,3)
b<-as.list(a)
sdf <- createDataFrame(sqlContext, b)
testtimes <- lapply(sdf, fxntest)
testtimelist <- collect(testtimes)
testtimelist
我正在寻找的是一个非常简单的例子,让我的工作变得有效 - 我已经使用了很多金额,但是还没有能够让这个与R一起工作。
答案 0 :(得分:0)
as.DataFrame
以来, createDataFrame
已重命名为1.6
。
这正确地用于在R中创建Spark DataFrame。
sdf <- as.DataFrame(sqlContext, list(1,1,1,1,1,3))
但是,那不是R对象。内置的R lapply
适用于常规列表,数组,向量等。
通过在Spark中运行它,你什么都得不到。您正在执行的计算未在群集中并行化。矩阵乘法在一台机器上完成。并且根本不使用Spark库。
这是工作代码,例如
fxntest<- function(i){
m = matrix(runif(4000*4000),4000)
return(system.time(m %*% m))
}
testtimes <- lapply(list(1,1,1,1,1,3), fxntest)
注意:如果这是您尝试使用的功能,则在Spark 2.x中添加了spark.lapply
。