标签: apache-spark-dataset

如何将 spark 数据集转换为 scala seq

我有以下案例类

case class Station(id: Long, name: String) extends Node
Run Code Online (Sandbox Code Playgroud)

和一个站的 Spark 数据集

vertices: org.apache.spark.sql.Dataset[Station] = [id: bigint, name: string]
Run Code Online (Sandbox Code Playgroud)

我想将顶点数据集转换为 Seq[Station]。我找到了很多关于如何从序列创建数据集的教程,反之亦然。你对我有什么暗示吗?

scala scala-collections apache-spark apache-spark-dataset

1
推荐指数
1
解决办法
2493
查看次数

Spark数据集:数据转换

我有一个格式为的 Spark 数据集 -

+--------------+--------+-----+
|name          |type    |cost |
+--------------+--------+-----+
|AAAAAAAAAAAAAA|XXXXX   |0.24|
|AAAAAAAAAAAAAA|YYYYY   |1.14|
|BBBBBBBBBBBBBB|XXXXX   |0.78|
|BBBBBBBBBBBBBB|YYYYY   |2.67|
|BBBBBBBBBBBBBB|ZZZZZ   |0.15|
|CCCCCCCCCCCCCC|XXXXX   |1.86|
|CCCCCCCCCCCCCC|YYYYY   |1.50|
|CCCCCCCCCCCCCC|ZZZZZ   |1.00|
+--------------+--------+----+
Run Code Online (Sandbox Code Playgroud)

我想将其转换为类型的对象 -

public class CostPerName {
    private String name;
    private Map<String, Double> costTypeMap;
}

Run Code Online (Sandbox Code Playgroud)

我想要的是,

+--------------+-----------------------------------------------+
|name          |           typeCost.                           |
+--------------+-----------------------------------------------+
|AAAAAAAAAAAAAA|(XXXXX, 0.24), (YYYYY, 1.14)                   |            
|BBBBBBBBBBBBBB|(XXXXX, 0.78), (YYYYY, 2.67), (ZZZZZ, 0.15)    |
|CCCCCCCCCCCCCC|(XXXXX, 1.86), (YYYYY, 1.50), (ZZZZZ, 1.00)    |
+--------------+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

即,对于每个name,我想要一张 的地图(type, cost)

实现这一转变的有效途径是什么?我可以使用一些数据帧转换吗?我尝试了 groupBy 但只有在执行 sum、avg 等聚合查询时才有效。

apache-spark apache-spark-sql apache-spark-dataset

1
推荐指数
1
解决办法
191
查看次数

了解 Spark SQL 的一些基础知识

我正在关注http://spark.apache.org/docs/latest/sql-programming-guide.html

输入后:

val df = spark.read.json("examples/src/main/resources/people.json")

// Displays the content of the DataFrame to stdout
df.show()
// +----+-------+
// | age|   name|
// +----+-------+
// |null|Michael|
// |  30|   Andy|
// |  19| Justin|
// +----+-------+
Run Code Online (Sandbox Code Playgroud)

我有一些问题没有看到答案。

首先,什么是 $ 符号?如在

 df.select($"name", $"age" + 1).show()
Run Code Online (Sandbox Code Playgroud)

其次,我可以只从第二行获取数据吗(而且我不知道第二行的数据是什么)。

第三,如何使用 Spark sql 读取彩色图像?

第四,我仍然不确定spark中的数据集和数据帧之间有什么区别。变量 df 是一个数据帧,那么我可以将“Michael”更改为整数 5 吗?我可以在数据集中做到这一点吗?

scala apache-spark apache-spark-sql apache-spark-dataset

0
推荐指数
1
解决办法
2036
查看次数

Spark数据集中的groupByKey

请帮助我理解在数据集上使用时传递给groupByKey的参数

scala> val data = spark.read.text("Sample.txt").as[String]
data: org.apache.spark.sql.Dataset[String] = [value: string]

scala> data.flatMap(_.split(" ")).groupByKey(l=>l).count.show
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,请帮助我理解groupByKey(l => l)中的(l => l)含义.

apache-spark apache-spark-dataset

0
推荐指数
1
解决办法
2万
查看次数

Apache Spark中的Printschema()

Dataset<Tweet> ds = sc.read().json("/path").as(Encoders.bean(Tweet.class));



Tweet class :-
long id
string user;
string text;


ds.printSchema();
Run Code Online (Sandbox Code Playgroud)

输出:-

root
  |-- id: string (nullable = true)
  |-- text: string (nullable = true)  
  |-- user: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

json文件具有字符串类型的所有参数

我的问题是接受输入并将其编码为Tweet.class。模式中为id指定的数据类型为Long,但在打印模式时将其强制转换为String

它是否为printscheme a / c提供了读取文件的方式或根据我们所做的编码(此处为Tweet.class)?

apache-spark spark-dataframe apache-spark-dataset

0
推荐指数
1
解决办法
2万
查看次数

为什么 DataFrame 仍然存在于 Spark 2.2 中,甚至 DataSet 在 scala 中也能提供更高的性能?

DataSet 比 dataframe 提供最佳性能。DataSet 提供编码器和类型安全,但 dataframe 仍在使用中,是否有任何特定场景仅在该场景中使用 dataframe,或者是否有任何函数在 dataframe 上工作而不在数据集中工作。

scala dataframe apache-spark apache-spark-dataset

0
推荐指数
1
解决办法
1286
查看次数