首页 > 解决方案 > 在线代码编辑器 Scastie 如何读取输入文件?

问题描述

我需要将一个非常大的输入文件传递给Scastie。我的意思是在线代码编辑器 Scastie 如何读取在我的本地机器上可用的文件,例如

val lines = sc.textfile("....mdb/u.data")

标签: scala

解决方案


一些人在团队的Gitter频道上提出了这个问题。

Scastie 团队成员首先询问文件有多大,然后建议将其放在 Github 上的Gist中,并使用原始 url 读取。

这仅适用于小文件。Gist 上的文件限制在其开发人员指南中进行了说明。

如果您需要文件的全部内容,可以向 raw_url 指定的 URL 发出 GET 请求。请注意,对于大于 10 兆字节的文件,您需要通过 git_pull_url 提供的 URL 克隆 gist。

所以 10 MB 是您的限制。另请注意,如果不将库标识到在线环境,则不能使用SparkContext(在您的问题中表示)。sc

为此,您必须添加 SBT 依赖项。

  • 导航到Build Settings界面的左侧。
  • 将 设置为Scala Version与我们将选择的 Spark 兼容的版本,在我们的例子中是 2.11.12。
  • Extra Sbt Configuration下面放置以下依赖项:
    libraryDependencies ++= Seq(
       "org.apache.spark" %% "spark-core" % "2.4.3",
       "org.apache.spark" %% "spark-sql" % "2.4.3"
    )

您将无法直接使用 读取 url 内容sc.textFile,这仅用于读取本地/HDFS 文本文件。您必须先获取内容,将其整理成形并从中受益DataFrame

此处显示的答案描述了如何使用Scala 标准库中的Source访问 Web url。

应 OP 的要求,这里有一个关于 scastie的实现。


推荐阅读