spark知識點_datasources

  來自官網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
            └── ...
相關文章
相關標籤/搜索