了解 Spark SQL 的一些基础知识

Posted

技术标签:

【中文标题】了解 Spark SQL 的一些基础知识【英文标题】:Understanding some basics of Spark SQL 【发布时间】:2017-01-06 21:13:18 【问题描述】:

我关注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|
// +----+-------+

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

首先,什么是 $-notation? 如

 df.select($"name", $"age" + 1).show()

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

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

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

【问题讨论】:

【参考方案1】:
    $ 不是注释。它是a method call(new ColumnName("name") 的快捷方式)。 你不会的。 Spark SQL 没有行索引的概念。 你不会的。您可以使用具有特定输入格式(例如来自 HIPI 项目的格式)的低级 RDD API,然后进行转换。 Difference between DataSet API and DataFrame

【讨论】:

【参考方案2】:

1) 对于问题 1,$ 符号用作选择列并在其上应用函数的快捷方式。例如:

df.select($"id".isNull).show

也可以写成

df.select(col("id").isNull)

2) Spark 没有索引,但对于原型设计,您可以使用df.take(10)(i),其中i 可能是您想要的元素。注意:每次对底层数据进行分区时,行为可能会有所不同。

【讨论】:

以上是关于了解 Spark SQL 的一些基础知识的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL知识点大全与实战

原创 Hadoop&Spark 动手实践 9Spark SQL 程序设计基础与动手实践(上)

Spark SQL 性能调优

Spark基础学习笔记01:初步了解Spark

1.Spark SQL基础—Spark SQL概述Spark SQL核心编程—DataFrameDataSet

spark实战之网站日志分析