Databrick csv 找不到本地文件
Databrick csv cannot find local file
在我从 excel 中提取 csv 的程序中,我需要将 csv 上传到 hdfs 并将其保存为 parquet 格式,与 python 版本或 spark 版本无关,不斯卡拉请。
我遇到的几乎所有讨论都是关于数据块的,但是,似乎找不到文件,这是代码和错误:
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: File file:/home/rxie/csv_out/wamp.csv
does not exist
文件路径:
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
谢谢。
我现在找到问题了!
file not found 错误的原因实际上是正确的,因为我使用 Spark Context 和 setMaster("yarn-cluster"),这意味着所有工作节点都将查找 csv 文件,当然所有工作节点(启动程序的节点除外) csv 所在)没有此文件,因此出错。我真正应该做的是使用 setMaster("local").
修复:
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)
是的,你是对的,该文件应该出现在所有工作节点上。
出色地。您仍然可以在 yarn 集群模式下读取本地文件。您只需要使用 addFile 添加您的文件。
spark.sparkContext.addFile("file:///your local file path ")
spark 会将文件复制到将创建执行程序的每个节点,并且也能够在集群模式下处理您的文件。
我使用的是 spark 2.3 版本,因此您可以相应地更改您的 spark 上下文,但 addFile 方法保持不变。
用你的 yarn(集群模式)试试这个,让我知道它是否适合你。
在我从 excel 中提取 csv 的程序中,我需要将 csv 上传到 hdfs 并将其保存为 parquet 格式,与 python 版本或 spark 版本无关,不斯卡拉请。
我遇到的几乎所有讨论都是关于数据块的,但是,似乎找不到文件,这是代码和错误:
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: File file:/home/rxie/csv_out/wamp.csv does not exist
文件路径:
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
谢谢。
我现在找到问题了!
file not found 错误的原因实际上是正确的,因为我使用 Spark Context 和 setMaster("yarn-cluster"),这意味着所有工作节点都将查找 csv 文件,当然所有工作节点(启动程序的节点除外) csv 所在)没有此文件,因此出错。我真正应该做的是使用 setMaster("local").
修复:
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)
是的,你是对的,该文件应该出现在所有工作节点上。 出色地。您仍然可以在 yarn 集群模式下读取本地文件。您只需要使用 addFile 添加您的文件。
spark.sparkContext.addFile("file:///your local file path ")
spark 会将文件复制到将创建执行程序的每个节点,并且也能够在集群模式下处理您的文件。 我使用的是 spark 2.3 版本,因此您可以相应地更改您的 spark 上下文,但 addFile 方法保持不变。
用你的 yarn(集群模式)试试这个,让我知道它是否适合你。