Spark SQL操作多种数据源

Spark SQL的默认数据源格式为parquet格式。数据源为Parquet文件时,SparkSQL 可以方便地进行读取,甚至可以直接在

Parquet 文件上执行查询操作。修改配置项spark.sqlsources.default,可以修改默认数据源格式。

以下示例通过通用的load/save方法对parquet文件进行读取、存储。

Parquet

先上传文件:

Spark SQL操作多种数据源_第1张图片

Spark SQL操作多种数据源_第2张图片

正如前面所讲的,sparkSession 是Spark SQL的编程主入口,在读取数据源时,需要调用sparkSession.read方法返回一个

DataFrameReader对象,进而通过其提供的读取各种结构化教据源的方法读取数据源,其中包括通用的load方法,返回的是

DataFrame对象。

Parquet存储的优势:

(I)可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。

(2)压缩编码可以降低磁盘存储空间。由于同一列的数据类型是一样的, 可以使用更高效的压缩编码

     (例如Run Length Encoding和Delta Encoding)进一步节约存储空间。

(3)只读取需要的列,支持向量运算,能够获取更好的扫描性能。
 

手动指定读取和保存的格式:

当数据源不是parquet格式文件时,需要手动指定数据源的格式。数据源格式需指定全名(如org.apachesparksl.parquet)

如果数据源为内置格式,则只需指定简称(json, parquet,jdbc, ore, libsvm, csv, text )即可。通过指定数据源格式名,还可以

对DataFrame进行类型转换操作。

Spark SQL操作多种数据源_第3张图片

HDFS中:

Spark SQL操作多种数据源_第4张图片

JSON

Spark SQL可处理的数据源包括简洁高效,常用于网络传输的JSON格式数据集。

Spark SQL可以自动推断JSON数据集的结构信息(Schema),并将其作为DataSel[Row]即DataFrame对象返回。通过将

Dataset [String]其中String对象是典型的JSON格式字符串)或表示JSON文件存储位置的路径字符中传入

SparkSession.readjson ()方法中来完成此转换。

需要注意的是,作为JSON文件提供的文件不是典型的JSON文件。每行必须包含一 个单独的,独立的有效的JSON对象。

具体操作和上面类似。

Hive:

为了让Spark SQL连接已经部署好的Hive数据仓库,将hive的hive-site.xml拷贝到spark的conf中,通过Spark sql并不能

显示hive中通过hive创建的数据库,Hadoop下的core-site.xml和hdfs-site.xml也拷贝过来。

Spark SQL操作多种数据源_第5张图片

 

 

你可能感兴趣的:(Spark)