apache-spark-dataset相关内容

Spark/Scala:用最后一次好的观察填充 nan

我正在使用 spark 2.0.1 并想用列中的最后一个已知值填充 nan 值. 我能找到的关于 spark 的唯一参考 Spark/Scala: forward fill with上次观察 或 用之前填充 nullpyspark 的已知良好价值,它似乎使用 RDD. 我宁愿留在数据框/数据集世界中,并可能处理多个 nan 值.这可能吗? 我的假设是数据(最初从例如 CSV 文件 ..

Spark 数据集 API - 加入

我正在尝试使用 Spark 数据集API,但我在进行简单连接时遇到了一些问题. 假设我有两个带有字段的数据集:date |value,然后在 DataFrame 的情况下,我的连接看起来像: val dfA : DataFrameval dfB : 数据帧dfA.join(dfB, dfB("date") === dfA("date") ) 但是对于 Dataset 有 .joinWit ..

Spark 数据集过滤器性能

我一直在尝试不同的方法来过滤类型化的数据集.事实证明,性能可能完全不同. 该数据集是基于 1.6 GB 数据行创建的,其中包含 33 列和 4226047 行.DataSet 是通过加载 csv 数据创建的,并映射到一个案例类. val df = spark.read.csv(csvFile).as[FireIncident] UnitId = 'B02' 上的过滤器应返回 47980 ..

Spark 数据集聚合类似于 RDD 聚合(零)(累加,组合器)

RDD 有一个非常有用的方法聚合,它允许累积一些零值并跨分区组合.有没有办法用 Dataset[T] 做到这一点.就我通过 Scala 文档看到的规范而言,实际上没有什么能够做到这一点.甚至reduce 方法也只允许对T 作为两个参数的二元运算进行操作.有什么理由吗?如果有什么能够做同样的事情吗? 非常感谢! VK 解决方案 有两个不同的类可用于在 Dataset API 中实 ..

Spark 数据集:示例:无法生成编码器问题

新来的火花世界并尝试我在网上找到的用 Scala 编写的数据集示例 通过 SBT 运行它时,我不断收到以下错误 org.apache.spark.sql.AnalysisException:无法为内部类生成编码器 知道我在俯瞰什么 也可以随意指出编写相同数据集示例的更好方法 谢谢 >sbt>运行主数据集示例使用 Spark 的默认 log4j 配置文件:org/ap ..

用于高效加入 Spark 数据帧/数据集的分区数据

我需要根据一些共享键列将许多数据帧join.对于键值 RDD,可以指定一个分区器,以便将具有相同键的数据点混洗到同一个执行器,因此加入更有效(如果在 join 之前有混洗相关操作).可以在 Spark DataFrames 或 DataSets 上做同样的事情吗? 解决方案 如果您知道将多次加入 DataFrame,您可以在加载它后重新分区 val users = spark.read. ..

何时使用 Spark DataFrame/Dataset API,何时使用普通 RDD?

Spark SQL DataFrame/Dataset 执行引擎有几个非常高效的时间&空间优化(例如 InternalRow 和表达式 codeGen).根据许多文档,对于大多数分布式算法,它似乎是比 RDD 更好的选择. 然而,我做了一些源代码研究,仍然不相信.我毫不怀疑 InternalRow 更紧凑,可以节省大量内存.但是算法的执行可能不会更快地保存预定义的表达式.也就是说,在org. ..

使用 Spark 数据集在 Scala 中执行类型化连接

我喜欢 Spark 数据集,因为它们在编译时给我分析错误和语法错误,还允许我使用 getter 而不是硬编码的名称/数字.大多数计算都可以使用 Dataset 的高级 API 来完成.例如,通过访问 Dataset 类型的对象来执行 agg、select、sum、avg、map、filter 或 groupBy 操作要比使用 RDD 行的数据字段简单得多. 但是这里缺少连接操作,我读到我可以 ..

尝试将数据帧行映射到更新行时出现编码器错误

当我尝试在我的代码中做同样的事情时,如下所述 dataframe.map(row => {val row1 = row.getAs[String](1)val make = if (row1.toLowerCase == "tesla") "S" else row1行(行(0),制作,行(2))}) 我从这里获取了上述参考:Scala:我如何使用 scala 替换数据帧中的值但我收到编码器错误 ..