Databrick CSV找不到本地文件

时间:2018-11-13 20:58:50

标签: csv databricks

在我从excel中提取了csv的程序中,我需要将csv上传到hdfs并保存为拼花格式,与python版本或spark版本无关,请不要使用scala。

我遇到的几乎所有讨论都是关于databrick的,但是,似乎找不到文件,这是代码和错误:

df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema","true").option("delimiter",",").load("file:///home/rxie/csv_out/wamp.csv")

错误:

  

java.io.FileNotFoundException:文件文件:/home/rxie/csv_out/wamp.csv   不存在

文件路径:

ls -la /home/rxie/csv_out/wamp.csv
-rw-r--r-- 1 rxie linuxusers 2896878 Nov 12 14:59 /home/rxie/csv_out/wamp.csv

谢谢。

2 个答案:

答案 0 :(得分:0)

我现在发现了问题!

由于未找到 文件 而导致错误的原因实际上是正确的,因为我正在将Spark Context与setMaster(“ yarn-cluster”一起使用 ”),这意味着所有工作节点都将查找csv文件,当然,所有工作节点(启动csv所在程序的节点除外)都没有此文件,因此会出错。我真正应该做的是使用 setMaster(“ local”)

FIX:

conf = SparkConf().setAppName('test').setMaster("local")
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
csv = "file:///home/rxie/csv_out/wamp.csv"
df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema","true").option("delimiter",",").load(csv)

答案 1 :(得分:0)

是的,是的,该文件应该存在于所有工作节点上。 好。您仍然可以在纱线簇模式下读取本地文件。您只需要使用addFile添加文件即可。

spark.sparkContext.addFile("file:///your local file path ")

spark会将文件复制到将在其中创建执行程序的每个节点,并且也可以在群集模式下处理您的文件。 我使用的是spark 2.3版本,因此您可以相应地更改spark上下文,但是addFile方法保持不变。

尝试使用您的纱线(群集模式),让我知道它是否适合您。