来自官网DataFrames、DataSets、SQL,即sparkSQL模块。html
经过dataframe接口,sparkSQL支持多种数据源的操做。能够把dataframe注册为临时视图,也能够经过关系转换。sql
1)默认格式是parquet,这是一种columnar(柱状的,按列的)的格式,按列存储(如Hadoop中)。apache
parquet载入后就是dataframe格式,而dataframe能够直接写出到parquet文件。json
df = spark.read.load("examples/src/main/resources/users.parquet") #默认parquet格式 df.select("name", "favorite_color").write.save("namesAndFavColors.parquet")
#可手动设置格式为json,亦能够是, , , , , , jsonparquetjdbcorclibsvmcsvtext等內建格式,若是是其余的则要写全称(i.e., org.apache.spark.sql.parquet
)org.apache.spark.sql.parquet
df = spark.read.load("examples/src/main/resources/people.json", format="json") df.select("name", "age").write.save("namesAndAges.parquet", format="parquet")
#能够直接在文件上执行SQL
df = spark.sql("SELECT * FROM parquet.`examples/src/main/resources/users.parquet`")
2)表分隔(partition)是如Hive的系统中经常使用的优化途径。分隔后的数据会存放在不一样的目录。ide
下面的文件就是以gender和country做为分隔字段(列)的。oop
path └── to └── table ├── gender=male │ ├── ... │ │ │ ├── country=US │ │ └── data.parquet │ ├── country=CN │ │ └── data.parquet │ └── ... └── gender=female ├── ... │ ├── country=US │ └── data.parquet ├── country=CN │ └── data.parquet └── ...