我正在尝试创建一个非常简单的Zeppelin笔记本,它可以读取csv文件并对文件进行分析。但是,我遇到了一个非常奇怪的错误。尽管ls
命令中显示了该文件,但是当我尝试将其读取为read.csv
时,却得到了java.io.FileNotFoundException
。
[默认情况下,Zeppelin笔记本(和底层的Spark堆栈)很可能配置为默认情况下在HDFS中查找相对文件路径。
因此,您可能需要使用绝对文件路径,并指出您正在使用文件系统。
data = spark.csv.read("file:///data/your_path/banks.csv")
如果笔记本连接到安装了Spark的集群,那么访问本地文件系统不是一个好主意(您必须将文件手动部署到集群中的每个节点,使其保持同步...)...这就是为什么HDFS是为。
所以您最好的选择就是利用它。将文件放在HDFS存储器中的某个位置,然后通过hdfs从spark加载它。
在您的外壳中:
hdfs dfs -put /file_system_path/banks.csv "/user/zeppelin/banks.csv"
请注意,可放置HDFS文件的实际路径将根据您的集群安装而有所不同。
然后,Spark应该能够加载它:
spark.csv.read("/user/zeppelin/banks.csv")