使用Spark處理JindoFS上的資料

更新時間:
Copy as MD

Spark處理JindoFS上的資料,主要有兩種方式,一種是直接調用檔案系統介面使用;一種是通過SparkSQL讀取存在JindoFS的資料表。

JindoFS配置

以EMR-3.35版本為例,建立名為emr-jfs的命名空間,相關配置參數樣本如下:
  • jfs.namespaces=emr-jfs
  • jfs.namespaces.emr-jfs.oss.uri=oss://oss-bucket/oss-dir
  • jfs.namespaces.emr-jfs.mode=block

處理JindoFS上的資料

  • 調用檔案系統

    Spark中讀寫JindoFS上的資料,與處理其他檔案系統的資料類似,以RDD操作為例,直接使用jfs的路徑即可:

    val a = sc.textFile("jfs://emr-jfs/README.md")

    scala> val a = sc.textFile("jfs://emr-jfs/README.md")
    a: org.apache.spark.rdd.RDD[String] = jfs://emr-jfs/README.md MapPartitionsRDD[1] at textFile at <console>:24

    寫入資料:

    scala> a.collect().saveAsTextFile("jfs://emr-jfs/output")
  • SparkSQL

    建立資料庫、資料表以及分區時指定LocationJindoFS即可,SparkSQL處理JindoFS上的資料與HiveSQL類似,詳情請參見使用Hive查詢JindoFS上的資料。對於已經建立好的儲存在JindoFS上的資料表,直接查詢即可。