我在Elasticsearch中使用Pyspark。我注意到,当您创建RDD时,不会在任何收集,计数或任何其他“最终”操作之前执行该RDD。
当我将转换后的RDD的结果用于其他事情时,是否还有执行和缓存转换后的RDD的方法。
就像我在评论部分所说的那样,
Spark中的所有转换都是 惰性的
,因为它们不会立即计算出结果。相反,他们只记得应用于某些基本数据集(例如文件)的转换。仅当操作要求将结果返回给驱动程序时才计算转换。这种设计使Spark可以更高效地运行-
例如,我们可以认识到通过map创建的数据集将用于reduce中,并且仅将reduce的结果返回给驱动程序,而不是将较大的maped数据集返回给驱动程序。
没有其他办法了。
为什么懒呢?
函数式编程的惰性评估优点:
注意: 大多数新的函数式编程语言都是惰性的(例如Haskell,Scala)。即使以为您使用的是Python,Spark还是用Scala编写的。
但是,如果要在每次RDD定义后计算RDD,则可以count
根据需要在缓存后执行操作,但这样做没有目的。您最终将在需要时获得RDD。
从昨天开始,我的pySpark代码就面临着一个奇怪的行为。我正在用PyCharm和Spark1.5在windows上工作。 我有时会有代码工作....这使得运行不一致....如有任何建议,将不胜感激... 更新:在回顾问题之后,它看起来是完全相同的行为Matei描述如下。显然,在缩短输入csv文件时,问题得到了解决。
我是apache spark的新手,显然我在我的macbook中安装了apache spark with homebrew: 我想开始玩,以便了解更多关于MLlib的信息。但是,我使用Py魅力在python中编写脚本。问题是:当我去Py魅力并尝试调用pyspark时,Py魅力找不到模块。我尝试将路径添加到Py魅力,如下所示: 然后我在博客上尝试了这个: 并且仍然无法开始使用PySpark与Py魅力
我正在使用boilerpipe从html中获取文本。然而,有一些问题我还没有解决。我有一个50k元素的列表。我正在创建一个包含1000个元素的rdd,然后对它们进行处理,并将结果rdd保存在hdfs中。我遇到的错误是: 在hdfs文件中,前1000个元素的结果被保存,但继续下去会抛出上述错误。这个问题有什么解决办法?
使用 Pyspark 使用 withColumn() 命令,以便在数据帧上执行一些基本转换,即更新列的值。寻找一些调试帮助,同时我也解决了这个问题。 Pyspark正在发布分析异常 _c49=“EVENT_NARRATIVE”是与哥伦布(“EVENT_NARRATIVE”)...引用火花 df(数据帧)内的数据元素。 df.head()中的1行示例数据:
问题内容: 我正在尝试以下代码,该代码向RDD中的每一行添加一个数字,并使用PySpark返回RDD列表。 输入文件(sample.txt)中的内容为: 我期待这样的输出(将rdd中的数字分别添加0、1、2): 而实际输出是: 这意味着无论 范围(4) 为何,该理解仅将值3用于变量i 。 为什么会发生这种现象? 问题答案: 它的发生是由于Python的后期绑定,而不是特定于(Py)Spark的。将
我在Dataframe中有数据,所有列都是字符串。现在,列中的一些数据是数值的,所以我可以强制转换为浮动。其他行实际上包含我不想强制转换的字符串。 像这样的事情通常是可能的(在没有UDF等的情况下以一种性能方式)吗?