将Spark数据集作为函数参数传递

时间:2016-12-08 03:31:42

标签: scala apache-spark apache-spark-dataset

我想传递Spark数据集作为函数的参数。例如

  case class Token1(name: String, productId: Int, score: Double)
  val data1 = Seq(
    Token1("aaa", 100, 0.12),
    Token1("aaa", 200, 0.29),
    Token1("bbb", 200, 0.53),
    Token1("bbb", 300, 0.42))
  val ds1 = data1.toDS()

  case class Token2(name: String, productId: Int)
  val data2 = Seq(
    Token2("aaa", 100),
    Token2("aaa", 200),
    Token2("bbb", 200),
    Token2("bbb", 300))
  val ds2 = data2.toDS()

  def printDS(ds:Dataset[T]): Unit ={
                      ds.show()
            }
  printDS(ds1)
  printDS(ds2)

我想将不同的数据集传递给printDS()。由于Spark数据集是强类型的,如何将Dataset [Token1]或Dataset [Token2]传递给接受Dataset [Any]?的printDS()。我可以将Spark Dataframes作为函数参数传递,而不是Spark数据集。

1 个答案:

答案 0 :(得分:3)

只需在printDS方法中使用类型参数:

$(window).on('scroll',function(){
    var a = $("#section0").hasClass('active');
    var b = $("#section1").hasClass('active');
    var c = $("#section2").hasClass('active');
    var d = $("#section3").hasClass('active');;
    var navscroll = $('.nav-next');
    if(a){
      $(navscroll).css('left','35%');
    }
    if(b){
      $(navscroll).css('left','65%');
    }
  if(c){
      $(navscroll).css('left','35%');
    }
  if(d){
      $(navscroll).css('left','65%');
    }
});

$('#fullpage').fullpage({
  sectionsColor: ['#1bbc9b', '#4BBFC3', '#7BAABE', 'whitesmoke', '#ccddff'],
  anchors: ['firstPage', 'secondPage', '3rdPage', '4thpage', 'lastPage'],
  menu: '#menu',
  slidesNavigation: true,
  scrollBar: true,
  autoScrolling:false
});
相关问题