使用 spark-csv 在 zeppelin 中读取 csv 文件
Reading csv files in zeppelin using spark-csv
我想在 Zeppelin 中读取 csv 文件并且想使用数据块'
spark-csv 包:https://github.com/databricks/spark-csv
在 spark-shell 中,我可以将 spark-csv 与
一起使用
spark-shell --packages com.databricks:spark-csv_2.11:1.2.0
但是我该如何告诉 Zeppelin 使用那个包呢?
提前致谢!
开始编辑
%dep 在 Zeppelin 0.6.0 中被弃用。请参考Paul-Armand Verhaegen的回答。
如果您使用的 zeppelin 早于 0.6.0,请进一步阅读此答案
编辑结束
您可以使用 %dep 解释器加载 spark-csv 包。
喜欢,
%dep
z.reset()
// Add spark-csv package
z.load("com.databricks:spark-csv_2.10:1.2.0")
请参阅 https://zeppelin.incubator.apache.org/docs/interpreter/spark.html
中的依赖加载部分
如果你已经初始化了 Spark Context,快速的解决方法是重启 zeppelin 并先执行带有上面代码的 zeppelin 段落,然后执行你的 spark 代码来读取 CSV 文件
您需要先将 Spark 包存储库添加到 Zeppelin,然后才能在 spark 包上使用 %dep。
%dep
z.reset()
z.addRepo("Spark Packages Repo").url("http://dl.bintray.com/spark-packages/maven")
z.load("com.databricks:spark-csv_2.10:1.2.0")
或者,如果这是您希望在所有笔记本中都可用的东西,您可以将 --packages 选项添加到 Zeppelin 解释器配置中的 spark-submit 命令设置,然后重新启动解释器。这应该启动一个上下文,其中已经按照 spark-shell 方法加载了包。
如果你定义在conf/zeppelin-env.sh
export SPARK_HOME=<PATH_TO_SPARK_DIST>
Zeppelin 然后会在 $SPARK_HOME/conf/spark-defaults.conf 中查找,您可以在那里定义 jars:
spark.jars.packages com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41
接着看
http://zepplin_url:4040/environment/ 用于以下内容:
spark.jars file:/root/.ivy2/jars/com.databricks_spark-csv_2.10-1.4.0.jar,file:/root/.ivy2/jars/org.postgresql_postgresql-9.3-1102-jdbc41.jar
spark.jars.packages com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41
更多参考:https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/interpreter/spark.html
- 转到解释器选项卡,单击存储库信息,添加一个存储库并将 URL 设置为 http://dl.bintray.com/spark-packages/maven
- 向下滚动到 spark 解释器段落并单击编辑,向下滚动一点到工件字段并添加 "com.databricks:spark-csv_2.10:1.2.0" 或更新版本。然后在询问时重新启动解释器。
在笔记本中,使用如下内容:
import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") // Use first line of all files as header
.option("inferSchema", "true") // Automatically infer data types
.load("my_data.txt")
更新:
在 Zeppelin 用户邮件列表中,Moon Soo Lee(Apache Zeppelin 的创建者)现在(2016 年 11 月)表示用户更愿意保留 %dep,因为它允许:
- notebook 中的自文档库要求;
- 每个注释(可能每个用户)库加载。
现在的趋势是保留 %dep,所以此时不应该被认为是折旧的。
另一个解决方案:
在 conf/zeppelin-env.sh(对我来说位于 /etc/zeppelin 中)添加行:
export SPARK_SUBMIT_OPTIONS="--packages com.databricks:spark-csv_2.10:1.2.0"
然后启动服务。
您可以在 Spark 解释器依赖项下添加 jar 文件:
- 单击导航栏中的 'Interpreter' 菜单。
- 单击 'edit' Spark 解释器按钮。
- 填充工件并排除字段。
- 按'Save'
我想在 Zeppelin 中读取 csv 文件并且想使用数据块' spark-csv 包:https://github.com/databricks/spark-csv
在 spark-shell 中,我可以将 spark-csv 与
一起使用spark-shell --packages com.databricks:spark-csv_2.11:1.2.0
但是我该如何告诉 Zeppelin 使用那个包呢?
提前致谢!
开始编辑
%dep 在 Zeppelin 0.6.0 中被弃用。请参考Paul-Armand Verhaegen的回答。
如果您使用的 zeppelin 早于 0.6.0,请进一步阅读此答案
编辑结束
您可以使用 %dep 解释器加载 spark-csv 包。
喜欢,
%dep
z.reset()
// Add spark-csv package
z.load("com.databricks:spark-csv_2.10:1.2.0")
请参阅 https://zeppelin.incubator.apache.org/docs/interpreter/spark.html
中的依赖加载部分如果你已经初始化了 Spark Context,快速的解决方法是重启 zeppelin 并先执行带有上面代码的 zeppelin 段落,然后执行你的 spark 代码来读取 CSV 文件
您需要先将 Spark 包存储库添加到 Zeppelin,然后才能在 spark 包上使用 %dep。
%dep
z.reset()
z.addRepo("Spark Packages Repo").url("http://dl.bintray.com/spark-packages/maven")
z.load("com.databricks:spark-csv_2.10:1.2.0")
或者,如果这是您希望在所有笔记本中都可用的东西,您可以将 --packages 选项添加到 Zeppelin 解释器配置中的 spark-submit 命令设置,然后重新启动解释器。这应该启动一个上下文,其中已经按照 spark-shell 方法加载了包。
如果你定义在conf/zeppelin-env.sh
export SPARK_HOME=<PATH_TO_SPARK_DIST>
Zeppelin 然后会在 $SPARK_HOME/conf/spark-defaults.conf 中查找,您可以在那里定义 jars:
spark.jars.packages com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41
接着看
http://zepplin_url:4040/environment/ 用于以下内容:
spark.jars file:/root/.ivy2/jars/com.databricks_spark-csv_2.10-1.4.0.jar,file:/root/.ivy2/jars/org.postgresql_postgresql-9.3-1102-jdbc41.jar
spark.jars.packages com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41
更多参考:https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/interpreter/spark.html
- 转到解释器选项卡,单击存储库信息,添加一个存储库并将 URL 设置为 http://dl.bintray.com/spark-packages/maven
- 向下滚动到 spark 解释器段落并单击编辑,向下滚动一点到工件字段并添加 "com.databricks:spark-csv_2.10:1.2.0" 或更新版本。然后在询问时重新启动解释器。
在笔记本中,使用如下内容:
import org.apache.spark.sql.SQLContext val sqlContext = new SQLContext(sc) val df = sqlContext.read .format("com.databricks.spark.csv") .option("header", "true") // Use first line of all files as header .option("inferSchema", "true") // Automatically infer data types .load("my_data.txt")
更新:
在 Zeppelin 用户邮件列表中,Moon Soo Lee(Apache Zeppelin 的创建者)现在(2016 年 11 月)表示用户更愿意保留 %dep,因为它允许:
- notebook 中的自文档库要求;
- 每个注释(可能每个用户)库加载。
现在的趋势是保留 %dep,所以此时不应该被认为是折旧的。
另一个解决方案:
在 conf/zeppelin-env.sh(对我来说位于 /etc/zeppelin 中)添加行:
export SPARK_SUBMIT_OPTIONS="--packages com.databricks:spark-csv_2.10:1.2.0"
然后启动服务。
您可以在 Spark 解释器依赖项下添加 jar 文件:
- 单击导航栏中的 'Interpreter' 菜单。
- 单击 'edit' Spark 解释器按钮。
- 填充工件并排除字段。
- 按'Save'