apache-spark-dataset相关内容
我正在使用 spark 2.0.1 并想用列中的最后一个已知值填充 nan 值. 我能找到的关于 spark 的唯一参考 Spark/Scala: forward fill with上次观察 或 用之前填充 nullpyspark 的已知良好价值,它似乎使用 RDD. 我宁愿留在数据框/数据集世界中,并可能处理多个 nan 值.这可能吗? 我的假设是数据(最初从例如 CSV 文件
..
这篇文章声称Spark中的DataFrame等价于Dataset[Row],但这篇博文 表明 DataFrame 具有架构.> 以博客文章中将 RDD 转换为 DataFrame 为例:如果 DataFrame 与 Dataset[Row] 相同,然后将 RDD 转换为 DataFrame 应该很简单 val rddToDF = rdd.map(value => Row(value)) 但它
..
假设我有一个这样的数据结构,其中 ts 是某个时间戳 case class Record(ts: Long, id: Int, value: Int) 鉴于这些记录中有大量,我希望以每个 id 的时间戳最高的记录结束.使用 RDD api 我认为以下代码可以完成工作: def findLatest(records: RDD[Record])(implicit spark: SparkSess
..
我正在尝试使用 Spark 数据集API,但我在进行简单连接时遇到了一些问题. 假设我有两个带有字段的数据集:date |value,然后在 DataFrame 的情况下,我的连接看起来像: val dfA : DataFrameval dfB : 数据帧dfA.join(dfB, dfB("date") === dfA("date") ) 但是对于 Dataset 有 .joinWit
..
我一直在尝试不同的方法来过滤类型化的数据集.事实证明,性能可能完全不同. 该数据集是基于 1.6 GB 数据行创建的,其中包含 33 列和 4226047 行.DataSet 是通过加载 csv 数据创建的,并映射到一个案例类. val df = spark.read.csv(csvFile).as[FireIncident] UnitId = 'B02' 上的过滤器应返回 47980
..
RDD 有一个非常有用的方法聚合,它允许累积一些零值并跨分区组合.有没有办法用 Dataset[T] 做到这一点.就我通过 Scala 文档看到的规范而言,实际上没有什么能够做到这一点.甚至reduce 方法也只允许对T 作为两个参数的二元运算进行操作.有什么理由吗?如果有什么能够做同样的事情吗? 非常感谢! VK 解决方案 有两个不同的类可用于在 Dataset API 中实
..
我在 spark 中有一个操作,应该对数据框中的几列执行.一般来说,有两种可能来指定这样的操作 硬编码 handleBias("bar", df).join(handleBias("baz", df), df.columns).drop(columnsToDrop: _*).show 从列名列表中动态生成它们 var isFirst = true无功res = dffor (c
..
我最近从 Spark 1.6 迁移到 Spark 2.X,并且我想在可能的情况下也从 Dataframes 迁移到 Datasets.我试过这样的代码 case class MyClass(a : Any, ...)val df = ...df.map(x => MyClass(x.get(0), ...)) 如您所见,MyClass 有一个 Any 类型的字段,因为我在编译时不知道我用 x
..
新来的火花世界并尝试我在网上找到的用 Scala 编写的数据集示例 通过 SBT 运行它时,我不断收到以下错误 org.apache.spark.sql.AnalysisException:无法为内部类生成编码器 知道我在俯瞰什么 也可以随意指出编写相同数据集示例的更好方法 谢谢 >sbt>运行主数据集示例使用 Spark 的默认 log4j 配置文件:org/ap
..
我需要根据一些共享键列将许多数据帧join.对于键值 RDD,可以指定一个分区器,以便将具有相同键的数据点混洗到同一个执行器,因此加入更有效(如果在 join 之前有混洗相关操作).可以在 Spark DataFrames 或 DataSets 上做同样的事情吗? 解决方案 如果您知道将多次加入 DataFrame,您可以在加载它后重新分区 val users = spark.read.
..
Spark SQL DataFrame/Dataset 执行引擎有几个非常高效的时间&空间优化(例如 InternalRow 和表达式 codeGen).根据许多文档,对于大多数分布式算法,它似乎是比 RDD 更好的选择. 然而,我做了一些源代码研究,仍然不相信.我毫不怀疑 InternalRow 更紧凑,可以节省大量内存.但是算法的执行可能不会更快地保存预定义的表达式.也就是说,在org.
..
为什么即使 DataFrame 中没有 NaN 值,在执行某些函数后仍使用 nullable = true. val myDf = Seq((2,"A"),(2,"B"),(1,"C")).toDF("foo","bar").withColumn("foo", 'foo.cast("Int"))myDf.withColumn("foo_2", when($"foo" === 2 , 1).oth
..
Spark 有 SQL 函数 percentile_approx(),它的 Scala 对应函数是 df.stat.approxQuantile(). 但是,Scala 对应项不能用于分组数据集,例如 df.groupby("foo").stat.approxQuantile(),如此处所回答:https://stackoverflow.com/a/51933027. 但是可以在 SQ
..
我使用的是 Spark 2.2,在尝试对 Map 的 Seq 调用 spark.createDataset 时遇到了麻烦. 我的 Spark Shell 会话的代码和输出如下: //createDataSet on Seq[T] where T = Int 有效标度>spark.createDataset(Seq(1, 2, 3)).collectres0: Array[Int] = Arra
..
我一直认为数据集/数据帧 API 是相同的..唯一的区别是数据集 API 将为您提供编译时安全性.对吗? 所以..我有一个非常简单的案例: case class Player (playerID: String,birthYear: Int)val playerDs: Dataset[Player] = session.read.option("header", "true").opti
..
我有一个表,其中有一个名为 writer 的数组类型列,它的值类似于 array[value1, value2], array[value2, value3].... 等 我正在执行 self join 以获得在数组之间具有共同值的结果.我试过了: sqlContext.sql("SELECT R2.writer FROM table R1 JOIN table R2 ON R1.id !
..
我在一个镶木地板文件中有数据,它有 2 个字段:object_id: String 和 alpha: Map. 它被读入 sparkSQL 中的数据框,架构如下所示: scala>alphaDF.printSchema()根|-- object_id: string (nullable = true)|-- ALPHA:地图(可为空 = 真)||-- 键:字符串||-- 值:结构体(val
..
我喜欢 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 替换数据帧中的值但我收到编码器错误
..
假设我们有 DataFrame df 由以下列组成: 姓名、姓氏、大小、宽度、长度、重量 现在我们要执行几个操作,例如我们要创建几个包含有关大小和宽度数据的 DataFrame. val df1 = df.groupBy("surname").agg( sum("size") )val df2 = df.groupBy("surname").agg(sum("width")) 如您
..