这个函数似乎对我的IDE有效:
def zip[T, U](rdd1:RDD[T], rdd2:RDD[U]) : RDD[(T,U)] = {
rdd1
.zipWithIndex
.map(_.swap)
.join(
rdd2
.zipWithIndex
.map(_.swap))
.values
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译时,我得到:
value join不是org.apache.spark.rdd.RDD [(Long,T)]的成员可能的原因:在`value join'之前可能缺少分号?.加入(
我在Spark 1.6中,我已经尝试导入org.apache.spark.rdd.RDD._ 并且函数内部的代码在函数定义之外的两个RDD上直接使用时效果很好.
任何的想法 ?

我非常努力地理解为什么迭代器的行为如此.我的意思是表演一次
result = lines.filter(_.nonEmpty).map(_.toInt)
Run Code Online (Sandbox Code Playgroud)
迭代器缓冲区覆盖了除最后一个元素之外的所有elemnets.
我的意思是如果在给出5次之后我的输入文本文件中有5个元素
result = lines.filter(_.nonEmpty).map(_.toInt)
Run Code Online (Sandbox Code Playgroud)
我的迭代器变空了.
非常感谢任何帮助....在此先感谢
两个List构造在编译/内存占用方面是否相同?
val list1 = x1 :: x2 :: x3 :: Nil
val list2 = List(x1, x2, x3)
Run Code Online (Sandbox Code Playgroud)
我认为list1更昂贵,因为每个h :: t创建一个List,然后连接每个新元素(产生一个新列表)直到最终列表.同时list2创建一个List.
在研究Scala的基础时,我遇到了"< - "运算符,他们说这是一个来自任何范围/列表或集合的生成器.
我希望将var/val的值从一个方法传递给另一个方法.
例如,我有
object abc {
def onStart = {
val startTime = new java.sql.Timestamp( new Date())
}
def onEnd = {
//use startTime here
}
}
Run Code Online (Sandbox Code Playgroud)
电话:
onStart()
executeReports(reportName, sqlContexts)
onEnd()
Run Code Online (Sandbox Code Playgroud)
这里onStart()和onEnd()有作业监控功能executeReports().
executeReports()循环运行5个报告.
我尝试过使用全局变量
object abc{
var startTime : java.sql.Timestamp = _
def onStart = {
startTime = new java.sql.Timestamp( new Date())
}
def onEnd = {
//use startTime here
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个问题是当循环执行下一个报告时,startTime不会改变.
我也试过使用对我来说也不起作用的Singleton Class.
我的要求是startTime每次迭代都有一个,即每个报告.欢迎任何想法在这里.如果需要,我会很乐意提供更多关于我的要求的说明.
我在用分隔符“ |”分割文本数据文件时遇到困难 放入数据框列。我加载的数据文件如下所示:
results1.show()
+--------------------+
| all|
+--------------------+
|DEPT_NO|ART_GRP_N...|
|29|102|354814|SKO...|
|29|102|342677|SKO...|
|29|102|334634|DUR...|
|29|102|319337|SKO...|
|29|102|316731|DUR...|
|29|102|316728|DUR...|
|29|102|316702|DUR...|
|29|102|316702|DUR...|
|29|102|276728|I-P...|
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下2种方法,这些方法在以前的文章中找到:
results1.select(expr("(split(all, '|'))[1]").cast("integer").as("DEPT_NO"),expr("(split(all, '|'))[4]").cast("integer").as("ART_GRP_NO"), expr("(split(all, '|'))[8]").cast("string").as("ART_NO")).show
+-------+----------+------+
|DEPT_NO|ART_GRP_NO|ART_NO|
+-------+----------+------+
| null| null| ||
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 3|
| 2| 1| 2|
Run Code Online (Sandbox Code Playgroud)
和
val dataframe10= sc.textFile(("D:/data/dnr10.txt")
.toString())
.map(_.split("|"))
.map(c => {(c(1), c(2),c(3),c(4))})
.toDF()
.show()
+---+---+---+---+ …Run Code Online (Sandbox Code Playgroud) 我是scala的新手。作为标题,我想创建一个可变映射Map[Int,(Int, Int)],如果键不存在,则默认值为元组(0,0)。在python中,“ defaultdict”使这种工作变得容易。在Scala中做到这一点的优雅方法是什么?
import org.apache.spark.sql.SparkSession
object DF_Exple1 {
val spark: SparkSession=SparkSession.builder().master("local").appName("sparkpika").getOrCreate()
val data2018 =spark.read.csv("D:\\bigData\\File\\Sales.csv")
data2018.show()
}
Run Code Online (Sandbox Code Playgroud)
我尝试import spark.implicits._ 但它会自动隐藏并且无法查看运行状态。
需要帮助来压扁这个......
Vector((1,2),(3,4),Array((5,6),(7,8)),(9,10))
Run Code Online (Sandbox Code Playgroud)
预期产出
Array((1,2),(3,4),(5,6),(7,8),(9,10))
Run Code Online (Sandbox Code Playgroud)
谢谢