当前位置: 首页 > 面试题库 >

Pyspark与Elasticsearch

羊舌富
2023-03-14
问题内容

我在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等的情况下以一种性能方式)吗?