我有一个RDD,它包含一组键值对。我想获得一个带键的元素(比如4)。
scala> val a = sc.parallelize(List("dog","tiger","lion","cat","spider","eagle"),2)
a: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:27
scala> val b = a.keyBy(_.length)
b: org.apache.spark.rdd.RDD[(Int, String)] = MapPartitionsRDD[1] at keyBy at <console>:29
我尝试对其应用过滤器,但收到错误。
scala> val c = b.filter(p => p(0) = 4);
<console>:31: error: value update is not a member of (Int, String)
val c = b.filter(p => p(0) = 4);
我想将特定键(比如4)的键值对打印为Array((4,lion))
数据总是以键,值对
的数组形式出现答案 0 :(得分:1)
使用p._1
代替p(0)
。
val rdd = sc.parallelize(List("dog", "tiger", "lion", "cat", "spider", "eagle"), 1)
val kvRdd: RDD[(Int, String)] = rdd.keyBy(_.length)
val filterRdd: RDD[(Int, String)] = kvRdd.filter(p => p._1 == 4)
//display rdd
println(filterRdd.collect().toList)
List((4,lion))
答案 1 :(得分:1)
有lookup
方法适用于直接提供此功能的键值对(类型为b.lookup(4)
// res4: Seq[String] = WrappedArray(lion)
b.lookup(5)
// res6: Seq[String] = WrappedArray(tiger, eagle)
的RDD)的RDD。
...
if ($this->User->save($this->data)) {
App::uses('CakeEmail', 'Network/Email');
$settings = $this->requestAction('pages/setting');
$this->email = new CakeEmail('smtp');
$email = $select['User']['email'];
$content = sprintf('<body> Sevgili ' . $select['User']['username'] . ", <br>
Şifre yenileme talebiniz tarafımıza iletilmiştir.
Aşağıdaki linki tıklayarak yeni şifrenizi belirleyebilirsiniz. <br>
<a href=\"http://%s/%s\">Buraya Tıklayınız</a> <br>
Keyifli Gezintiler <br>
Yukardaki link ile bağlantı sağlayamıyorsanız,
linki web tarayıcınızın adres bölümüne kopyalayabilirsiniz.</body>", $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], $code);
$this->email->from(array($settings['Setting']['smtp_mail'] => $settings['Setting']['title']))
->to($email)
->emailFormat('html')
->subject('Şifre Yenileme [' . time() . ']');
if ($this->email->send($content)) {
$this->Session->setFlash(__('Şifre güncelleme bilgileriniz E-Posta adresinize gönderilmiştir.'), 'default', array('class' => 'success'));
} else {
trigger_error("error Mail");
}
$this->redirect('forgot');
}