spark知识点_datasources

  来自官网DataFrames、DataSets、SQL,即sparkSQL模块。

  通过dataframe接口,sparkSQL支持多种数据源的操作。可以把dataframe注册为临时视图,也可以通过关系转换。

  1)默认格式是parquet,这是一种columnar(柱状的,按列的)的格式,按列存储(如Hadoop中)。

  parquet载入后就是dataframe格式,而dataframe可以直接写出到parquet文件。

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)
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的系统中常用的优化途径。分隔后的数据会存放在不同的目录。

  下面的文件就是以gender和country作为分隔字段(列)的。

path
└── to
    └── table
        ├── gender=male
        │   ├── ...
        │   │
        │   ├── country=US
        │   │   └── data.parquet
        │   ├── country=CN
        │   │   └── data.parquet
        │   └── ...
        └── gender=female
            ├── ...
            │
            ├── country=US
            │   └── data.parquet
            ├── country=CN
            │   └── data.parquet
            └── ...
posted @ 2017-10-11 17:54  小熊_看看  阅读(233)  评论(0编辑  收藏  举报