简单的SparkR 1.6示例

时间:2016-10-18 22:43:50

标签: r apache-spark spark-dataframe sparkr

我正在努力让一个简单的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一起工作。

1 个答案:

答案 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