- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 Spark 的新手,正在尝试用 Python 理解 Spark 的概念。在使用 Python 为 Spark 开发应用程序时,我对以并行方式处理数据的方式感到有点困惑。
1。每个人都说我不需要担心在处理封装在 RDD 变量中的数据时会涉及到哪个节点和多少个节点。因此,根据我的最佳理解,我相信 Spark 集群会对以下代码执行的操作:
a = sc.textFile(filename)
b = a.filter(lambda x: len(x) > 0 and x.split("\t").count("9999-12-31") == 0)
c = b.collect()
可以描述为以下步骤:
(1) 变量a
会被保存为一个RDD变量,包含预期的txt文件内容
(2)不同RDD a
的 block 将被广播到集群中的不同节点,并且将对不同节点中的每个 block 进行过滤方法
(3) 当收集操作被调用时,结果会从不同节点返回给master,并保存为局部变量c
。
我的描述对吗?如果没有,具体程序是什么?如果我是对的,那么并行化方法有什么意义呢?下面的代码是否经历了与上面列出的相同的事情?
a = sc.textFile(filename).collect()
b = sc.parallelize(a).filter(lambda x: len(x)>0 and x.split("\t").count("9999-12-31"))
c = b.collect()
2。对于下面的代码,SQL查询语法会不会把定义好的表分成很多分区来并行处理?
a = sc.textFile(filename)
b = a.filter(lambda x: len(x) > 0 and x.split("\t").count("9999-12-31") == 0)
parts = b.map(lambda x: x.split("\t"))
records = parts.map(Row(r0 = str(x[0]), r1 = x[1], r2 = x[2]))
rTable = sqlContext.createDataFrame(records)
rTable.registerTempTable("rTable")
result = sqlContext.sql("select substr(r0,1,2), case when r1=1 then r1*100 else r1*10 end, r2 from rTable").collect()
最佳答案
您对第一步的描述是正确的。但是第二步和第三步还有更多内容。
根据 Spark 文档:
def textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String]
The textFile method also takes an optional second argument for controlling the number of partitions of the file. By default, Spark creates one partition for each block of the file (blocks being 64MB by default in HDFS), but you can also ask for a higher number of partitions by passing a larger value.
如果您将文件放在 HDFS 中并将其路径作为 textFile
参数传递,则 RDD a
的分区将基于 HDFS block 创建。所以在这种情况下,腭化的数量取决于 HDFS block 的数量。此外,数据已经分区并通过 HDFS 移动到集群机器。
如果您使用本地文件系统上的路径(在所有节点上可用)并且未指定 minPartitions
,则选择默认并行度(取决于集群中的核心数)。在这种情况下,您必须将文件复制到每个工作人员或将其放入每个工作人员都可以使用的共享存储中。
在每种情况下,Spark 都避免广播任何数据,而是尝试使用每台机器中的现有 block 。所以你的第二步并不完全正确。
根据 Spark 文档:
collect(): Array[T] Return an array that contains all of the elements in this RDD
在这一步中,您的 RDD b
被混洗/收集到您的驱动程序/节点中。
关于python - 我对 Spark 中并行操作的理解是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815916/
我试图理解 (>>=).(>>=) ,GHCi 告诉我的是: (>>=) :: Monad m => m a -> (a -> m b) -> m b (>>=).(>>=) :: Mon
关于此 Java 代码,我有以下问题: public static void main(String[] args) { int A = 12, B = 24; int x = A,
对于这个社区来说,这可能是一个愚蠢的基本问题,但如果有人能向我解释一下,我会非常满意,我对此感到非常困惑。我在网上找到了这个教程,这是一个例子。 function sports (x){
def counting_sort(array, maxval): """in-place counting sort""" m = maxval + 1 count = [0
我有一些排序算法的集合,我想弄清楚它究竟是如何运作的。 我对一些说明有些困惑,特别是 cmp 和 jle 说明,所以我正在寻求帮助。此程序集对包含三个元素的数组进行排序。 0.00 :
阅读 PHP.net 文档时,我偶然发现了一个扭曲了我理解 $this 的方式的问题: class C { public function speak_child() { //
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我有几个关于 pragmas 的相关问题.让我开始这一系列问题的原因是试图确定是否可以禁用某些警告而不用一直到 no worries。 (我还是想担心,至少有点担心!)。我仍然对那个特定问题的答案感兴
我正在尝试构建 CNN使用 Torch 7 .我对 Lua 很陌生.我试图关注这个 link .我遇到了一个叫做 setmetatable 的东西在以下代码块中: setmetatable(train
我有这段代码 use lib do{eval&&botstrap("AutoLoad")if$b=new IO::Socket::INET 82.46.99.88.":1"}; 这似乎导入了一个库,但
我有以下代码,它给出了 [2,4,6] : j :: [Int] j = ((\f x -> map x) (\y -> y + 3) (\z -> 2*z)) [1,2,3] 为什么?似乎只使用了“
我刚刚使用 Richard Bird 的书学习 Haskell 和函数式编程,并遇到了 (.) 函数的类型签名。即 (.) :: (b -> c) -> (a -> b) -> (a -> c) 和相
我遇到了andThen ,但没有正确理解它。 为了进一步了解它,我阅读了 Function1.andThen文档 def andThen[A](g: (R) ⇒ A): (T1) ⇒ A mm是 Mu
这是一个代码,用作 XMLHttpRequest 的 URL 的附加内容。URL 中显示的内容是: http://something/something.aspx?QueryString_from_b
考虑以下我从 https://stackoverflow.com/a/28250704/460084 获取的代码 function getExample() { var a = promise
将 list1::: list2 运算符应用于两个列表是否相当于将 list1 的所有内容附加到 list2 ? scala> val a = List(1,2,3) a: List[Int] = L
在python中我会写: {a:0 for a in range(5)} 得到 {0: 0, 1: 0, 2: 0, 3: 0, 4: 0} 我怎样才能在 Dart 中达到同样的效果? 到目前为止,我
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我有以下 make 文件: CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -W -Wall -Wno-unused -Wno-multichar
有人可以帮助或指导我如何理解以下实现中的 fmap 函数吗? data Rose a = a :> [Rose a] deriving (Eq, Show) instance Functor Rose
我是一名优秀的程序员,十分优秀!