gpt4 book ai didi

scala - dataframereader 如何读取http?

转载 作者:行者123 更新时间:2023-12-01 23:12:36 25 4
gpt4 key购买 nike

我的开发环境:

  • Intellij
  • Maven
  • Scala2.10.6
  • win7 x64

  • 依赖项:

     <dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.2.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib_2.10 -->
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.10</artifactId>
    <version>2.2.0</version>
    <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10 -->
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>2.2.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->
    <dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-reflect -->
    <dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-reflect</artifactId>
    <version>2.10.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.7.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>2.7.4</version>
    </dependency>
    </dependencies>

    问题:
    我想将远程 csv 文件读入数据帧。
    我接下来尝试:
    val weburl = "http://myurl.com/file.csv"
    val tfile = spark.read.option("header","true").option("inferSchema","true").csv(weburl)

    它返回下一个错误:
    Exception in thread "main" java.io.IOException: No FileSystem for scheme: http

    我尝试了以下互联网搜索(包括stackoverflow)
    val content = scala.io.Source.fromURL(weburl).mkString
    val list = content.split("\n")
    //...doing something to string and typecase, seperate each lows to make dataframe format.

    它工作正常,但我认为加载 web 源 csv 文件更聪明。
    DataframeReader 有什么办法可以读取 HTTP csv?

    我认为设置 SparkContext.hadoopConfiguration 是一些关键,所以我在互联网上尝试了很多代码。但它没有用,我不知道如何设置和代码行的每个含义。

    接下来是我的尝试之一,但没有奏效。(访问“http”时出现相同的错误消息)
    val sc = new SparkContext(spark_conf)
    val spark = SparkSession.builder.appName("Test").getOrCreate()
    val hconf = sc.hadoopConfiguration


    hconf.set("fs.hdfs.impl", classOf[org.apache.hadoop.hdfs.DistributedFileSystem].getName)
    hconf.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName)
    hconf.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName)

    设置这是关键吗?或不?
    或者 DataframeReader 不能直接从远程源读取?我该怎么做?
    我需要为 http 格式导入一些特殊的库吗?

    我想知道的事情 :

    有没有什么办法让dataframereader可以读取HTTP源?
    无需使用自己的解析数据。 (例如 Best way to convert online csv to dataframe scala 。)
    我需要阅读 CSV 格式。 CSV 是正式格式。我认为更通用的方式来读取数据,如 dataframereader.csv("local file" )。

    我知道这个问题级别太低了。很抱歉我的理解水平低。

    最佳答案

    据我所知,无法直接读取 HTTP 数据。您可以做的最简单的事情可能是使用 SparkFiles 下载文件,但它会将数据复制到每个 worker :

    import org.apache.spark.SparkFiles

    spark.sparkContext.addFile("http://myurl.com/file.csv")
    spark.read.csv(SparkFiles.get("file.csv"))

    就我个人而言,我只是预先下载文件并放入分布式存储中。

    关于scala - dataframereader 如何读取http?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101164/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com