相关疑难解决方法(0)

如何使用Python在Spark中执行两个RDD表的基本连接?

你将如何使用python在Spark中执行基本连接?在R中你可以使用merg()来做到这一点.使用python on spark的语法是什么:

  1. 内部联接
  2. 左外连接
  3. 交叉加入

使用两个表(RDD),每个表中都有一个具有公共密钥的列.

RDD(1):(key,U)
RDD(2):(key,V)
Run Code Online (Sandbox Code Playgroud)

我认为内部联接是这样的:

rdd1.join(rdd2).map(case (key, u, v) => (key, ls ++ rs));
Run Code Online (Sandbox Code Playgroud)

是对的吗?我在互联网上搜索过,无法找到一个很好的连接示例.提前致谢.

python join apache-spark rdd pyspark

16
推荐指数
1
解决办法
4万
查看次数

如何在火花中处理错误SPARK-5063

我在println行中收到错误消息SPARK-5063

val d.foreach{x=> for(i<-0 until x.length)
      println(m.lookup(x(i)))}    
Run Code Online (Sandbox Code Playgroud)

d是 RDD[Array[String]] m RDD[(String, String)].有没有办法以我想要的方式打印?或者我如何将d转换RDD[Array[String]]Array[String]

scala apache-spark

8
推荐指数
1
解决办法
1万
查看次数

不同的调用和地图一起抛出火花库中的NPE

我不确定这是否是一个错误,所以如果你做这样的事情

// d:spark.RDD[String]
d.distinct().map(x => d.filter(_.equals(x)))
Run Code Online (Sandbox Code Playgroud)

你会得到一个Java NPE.但是如果你collect马上做了distinct,一切都会好的.

我正在使用spark 0.6.1.

scala nullpointerexception apache-spark

5
推荐指数
1
解决办法
5675
查看次数

在spark中加入两个RDD

我有两个rdd一个rdd只有一列其他有两列加入两个RDD上的键我已经添加了虚拟值0,有没有其他有效的方法这样做使用连接?

val lines = sc.textFile("ml-100k/u.data")
val movienamesfile = sc.textFile("Cml-100k/u.item")

val moviesid = lines.map(x => x.split("\t")).map(x => (x(1),0))
val test = moviesid.map(x => x._1)
val movienames = movienamesfile.map(x => x.split("\\|")).map(x => (x(0),x(1)))
val shit = movienames.join(moviesid).distinct()
Run Code Online (Sandbox Code Playgroud)

编辑:

让我在SQL中转换这个问题.比方说我有table1 (moveid)table2 (movieid,moviename).在SQL中我们写了类似的东西:

select moviename, movieid, count(1)
from table2 inner join table table1 on table1.movieid=table2.moveid 
group by ....
Run Code Online (Sandbox Code Playgroud)

这里的SQL table1只有一列,其中table2有两列仍然可以join工作,Spark中的相同方式可以连接来自两个RDD的键.

scala apache-spark

3
推荐指数
1
解决办法
3万
查看次数

如何将查找(广播)RDD(或数据集)访问到其他RDD映射函数中

我是spark和scala的新手,刚开始学习......我在CDH 5.1.3上使用spark 1.0.0

我得到了一个名为dbTableKeyValueMap的广播rdd:RDD [(String,String)],我想使用dbTableKeyValueMap来处理我的文件RDD(每行有300多列).这是代码:

val get = fileRDD.map({x =>
  val tmp = dbTableKeyValueMap.lookup(x)
  tmp
})
Run Code Online (Sandbox Code Playgroud)

在本地运行此挂起和/或在一段时间后出错:

scala.MatchError: null
at org.apache.spark.rdd.PairRDDFunctions.lookup(PairRDDFunctions.scala:571)
Run Code Online (Sandbox Code Playgroud)

我可以理解访问一个RDD里面其他会有问题,如果集合的地点和大小进入图片..对于我采取笛卡尔产品不是选项,因为文件RDD中的记录是巨大的(每行有300+列)...就像我使用分布式缓存在setup方法中加载这个dbTableKeyValueMap并在hadoop java mapreduce代码的MAP中使用,我想在spark map中使用类似的方式...我找不到简单的例子来引用类似的用例...一个我想迭代文件RDD行并在"每一列"上进行一些转换,祝福,查找等以进行进一步处理......或者还有其他任何方式我可以使用dbTableKeyValueMap作为scala集合而不是spark RDD

请帮忙

scala broadcasting apache-spark spark-streaming rdd

0
推荐指数
1
解决办法
7872
查看次数