代码之家  ›  专栏  ›  技术社区  ›  JetS79

如何使用scala to spark从Blob存储中读取文件

  •  1
  • JetS79  · 技术社区  · 6 年前

    我有一段在本地工作的scala代码

    val test = "resources/test.csv"
    
    val trainInput = spark.read
      .option("header", "true")
      .option("inferSchema", "true")
      .format("com.databricks.spark.csv")
      .load(train)
      .cache
    

    但是,当我尝试在azure上运行它时,spark会提交作业并调整以下行:

    val test = "wasb:///tmp/MachineLearningScala/test.csv"
    

    它不起作用。如何使用scala引用azure中blob存储中的文件?这应该是直截了当的。

    1 回复  |  直到 6 年前
        1
  •  2
  •   koiralo    6 年前

    如果您使用的是sbt,请将此依赖项添加到Build。sbt公司

    "org.apache.hadoop" % "hadoop-azure" % "2.7.3"
    

    对于maven,将依赖项添加为

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-azure</artifactId>
        <version>2.7.0</version>
    </dependency>
    

    要从blob存储中读取文件,需要定义要在底层Hadoop配置中使用的文件系统。

    spark.sparkContext.hadoopConfiguration.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem")
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.key.yourAccount.blob.core.windows.net", "yourKey ")
    

    并阅读 csv 文件为

      val path = "wasb[s]://BlobStorageContainer@yourUser.blob.core.windows.net"
      val dataframe = spark.read
        .option("header", "true")
        .option("inferSchema", "true")
        .csv(path + "/tmp/MachineLearningScala/test.csv")
    

    here 就是这个例子 希望这有帮助!