Zeppelin 无法读取本地文件系统的文件路径

Posted

技术标签:

【中文标题】Zeppelin 无法读取本地文件系统的文件路径【英文标题】:Zeppelin cannot read file path of local file System 【发布时间】:2018-12-30 18:13:50 【问题描述】:

我已经在我的 Windows 系统上安装了 Zeppelin 和 Docker,现在我正在尝试使用本地文件运行 Zeppelin Tutorial 中定义的代码,但它抛出错误 -

java.net.URISyntaxException: Expected scheme-specific part at index 2: C:
at java.net.URI$Parser.fail(URI.java:2848)
at java.net.URI$Parser.failExpecting(URI.java:2854)
at java.net.URI$Parser.parse(URI.java:3057)
at java.net.URI.<init>(URI.java:746)
at org.apache.hadoop.fs.Path.initialize(Path.java:203)
at org.apache.hadoop.fs.Path.<init>(Path.java:172)
at org.apache.hadoop.fs.Path.<init>(Path.java:94)
at org.apache.hadoop.fs.Globber.glob(Globber.java:201)
at org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:1643)
at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:222)
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:270)
at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:194)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:250)

这是我正在使用的路径-

file:///C:/xampp/htdocs/bank/bank-full.csv

代码-

val bankText = sc.textFile("file:///C:/xampp/htdocs/bank/bank-full.csv")

case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)

val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(
s=>Bank(s(0).toInt, 
        s(1).replaceAll("\"", ""),
        s(2).replaceAll("\"", ""),
        s(3).replaceAll("\"", ""),
        s(5).replaceAll("\"", "").toInt
    )
 )

 bank.toDF().registerTempTable("bank")
 %sql select * from bank

请帮帮我。

提前致谢!

【问题讨论】:

你能展示一段你的代码吗?因为对我来说它只适用于new URI(...); 请再次检查问题。 @AlexOtt Hadoop 确实有点奇怪——看起来它首先转换了 URI,然后将转换后的字符串传递给 java.net.URI 构造函数......不幸的是我不知道答案 【参考方案1】:

使用文件:///xampp/htdocs/bank/bank-full.csv 并确保您的程序也在 C 驱动程序中。

【讨论】:

我在 Docker 和 Path 中的程序是 - C:\Users\Public\Documents\Hyper-V\Virtual hard disks,我尝试了你的解决方案,上面写着 org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/xampp/htdocs/bank/bank-full.csv :( @zjffdu

以上是关于Zeppelin 无法读取本地文件系统的文件路径的主要内容,如果未能解决你的问题,请参考以下文章

Mac版保存本地时,wps未授权无法显示系统本地路径下的文件列表?

如何配置matplotlib以便能够从本地路径读取字体?

apache zeppelin 使用 pyspark 读取 csv 失败

从节点 fs 模块中的绝对路径读取本地文件

Spark Shell 无法读取有效路径的文件

Spring 云服务器无法从本地文件系统读取