在 docker 容器上的 zeppelin 运行 中将本地文件读入 spark 数据帧
Read local files into spark dataframe in zeppelin running on a docker container
我正尝试在笔记本电脑上使用 apache zeppelin docker image 在 Zeppelin 中编写 Spark 代码。除了从本地磁盘读取文件外,一切都按预期工作,例如当我尝试将 csv 文件读入 Spark 数据帧时
val df = spark.read.csv("/User/myname/documents/data/xyz.csv")
我收到以下错误:
org.apache.spark.sql.AnalysisException: Path does not exist: file:/User/myname/documents/data/xyz.csv;
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun.apply(DataSource.scala:382)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun.apply(DataSource.scala:370)
at scala.collection.TraversableLike$$anonfun$flatMap.apply(TraversableLike.scala:241)
at scala.collection.TraversableLike$$anonfun$flatMap.apply(TraversableLike.scala:241)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
at scala.collection.immutable.List.flatMap(List.scala:344)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:370)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:415)
at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:352)
... 47 elided
我想我找到了答案:
我拉取了 docker 图像(我使用了下面的图像,但您可以更改它)
docker pull skymindops/zeppelin-dl4j
然后运行:
docker run -it --rm -p 7077:7077 -p 8080:8080 --privileged=true -v $PWD/logs:/logs -v $PWD/notebook:/notebook -v $PWD/data:/data \
-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
-e ZEPPELIN_LOG_DIR='/logs' \
skymindops/zeppelin-dl4j:latest
现在可以从数据文件夹读取文件了:
val df = spark.read.option("header", "true").csv("/data/xyz.csv")
请注意,我不需要该图像中已有的笔记本。
我正尝试在笔记本电脑上使用 apache zeppelin docker image 在 Zeppelin 中编写 Spark 代码。除了从本地磁盘读取文件外,一切都按预期工作,例如当我尝试将 csv 文件读入 Spark 数据帧时
val df = spark.read.csv("/User/myname/documents/data/xyz.csv")
我收到以下错误:
org.apache.spark.sql.AnalysisException: Path does not exist: file:/User/myname/documents/data/xyz.csv;
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun.apply(DataSource.scala:382)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun.apply(DataSource.scala:370)
at scala.collection.TraversableLike$$anonfun$flatMap.apply(TraversableLike.scala:241)
at scala.collection.TraversableLike$$anonfun$flatMap.apply(TraversableLike.scala:241)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
at scala.collection.immutable.List.flatMap(List.scala:344)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:370)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:415)
at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:352)
... 47 elided
我想我找到了答案: 我拉取了 docker 图像(我使用了下面的图像,但您可以更改它)
docker pull skymindops/zeppelin-dl4j
然后运行:
docker run -it --rm -p 7077:7077 -p 8080:8080 --privileged=true -v $PWD/logs:/logs -v $PWD/notebook:/notebook -v $PWD/data:/data \
-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
-e ZEPPELIN_LOG_DIR='/logs' \
skymindops/zeppelin-dl4j:latest
现在可以从数据文件夹读取文件了:
val df = spark.read.option("header", "true").csv("/data/xyz.csv")
请注意,我不需要该图像中已有的笔记本。