我需要将一个非常大的输入文件传递给Scastie。我的意思是,在线代码编辑器Scastie如何读取本地机器上可用的文件,例如
val lines = sc.textfile("....mdb/u.data")
一些人在团队的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"
)
您将无法使用sc.textFile
直接读取url内容,这仅用于读取本地/HDFS文本文件。你必须先得到内容,把它调整好形状,然后得到一个DataFrame
这里显示的答案描述了如何使用Scala标准库中的Source访问web url。
应OP的要求,这里有一个关于scastie的实现。