reducebykey不是org.apache.spark.sql.dataset的成员

oogrdqng  于 2021-05-18  发布在  Spark
关注(0)|答案(1)|浏览(711)
  1. import org.apache.spark.SparkContext._
  2. import org.apache.spark.SparkConf
  3. import org.apache.spark.sql.SQLContext
  4. import org.apache.spark.sql.functions._
  5. val ticker_data_rdd = ticker_data_parsed.
  6. filter("date_stamp='2017-01-03 00:00:00.0' or date_stamp='2017-08-25 00:00:00.0'").
  7. orderBy($"ticker",$"date_stamp".desc)
  8. val ticker_data_pair_rdd = ticker_data_rdd.
  9. map(x=> (x(0).toString,(x(2).toString.toDouble,x(3).toString.toDouble))).
  10. reduceByKey((x,y)=> (y._1,x._2))

请帮助解决问题 ticker_data_pair_rdd ?

hmtdttj4

hmtdttj41#

即使你打电话来 ticker_data_rdd 似乎它不是rdd而是数据集,所以不能在那里使用该方法
你可以把它变成rdd如果你想(我不认为这是一个好主意)

  1. val ticker_data_pair_rdd = ticker_data_rdd
  2. .map(x=> (x(0).toString,(x(2).toString.toDouble,x(3).toString.toDouble)))
  3. .rdd
  4. .reduceByKey((x,y)=> (y._1,x._2))

或者你也可以 reduceByKey 数据集中的“等价物”,类似于:

  1. val ticker_data_pair_rdd = ticker_data_rdd
  2. .map(x=> (x(0).toString,(x(2).toString.toDouble,x(3).toString.toDouble)))
  3. .groupBy($"_1").agg(collect_list($"_2"))

关于rdd和数据集的一些信息

相关问题