使用spark-csv在zeppelin中读取csv文件

时间:2015-10-06 09:55:01

标签: apache-spark apache-zeppelin

我想在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使用那个包呢?

提前致谢!

6 个答案:

答案 0 :(得分:15)

您需要先将Spark Packages存储库添加到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")

或者,如果您想在所有笔记本中使用此功能,则可以在Zeppelin的解释器配置中将--packages选项添加到spark-submit命令设置,然后重新启动解释器。这应该根据spark-shell方法启动已经加载的包的上下文。

答案 1 :(得分:8)

  1. 转到解释器选项卡,单击存储库信息,添加存储库并将URL设置为http://dl.bintray.com/spark-packages/maven
  2. 向下滚动到spark解释器段落并单击编辑,向下滚动一下到工件字段并添加" com.databricks:spark-csv_2.10:1.2.0"或更新的版本。然后在被问到时重启解释器。
  3. 在笔记本中,请使用以下内容:

    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")
    
  4. 更新

    在Zeppelin用户邮件列表中,现在(2016年11月)Moon Soo Lee(Apache Zeppelin的创建者)表示用户更愿意保留%dep,因为它允许:

    • 笔记本中的自我记录库要求;
    • 每个注释(以及可能的每个用户)库加载。

    现在倾向于保持%dep,因此此时不应将其视为折旧。

答案 2 :(得分:4)

<强> BEGIN-修改

%dep在Zeppelin 0.6.0中已弃用。请参考Paul-Armand Verhaegen的回答。

如果您使用的是早于0.6.0的zeppelin

,请在此答案中进一步阅读

<强> END-修改

您可以使用%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文件

答案 3 :(得分:1)

您可以在Spark解释器依赖项下添加jar文件:

  1. 点击&#39;口译员&#39;导航栏中的菜单。
  2. 点击&#39;编辑&#39; Spark解释器的按钮。
  3. 填充工件并排除字段。
  4. 按&#39;保存&#39;

答案 4 :(得分:0)

如果你在conf / zeppelin-env.sh中定义

export SPARK_HOME=<PATH_TO_SPARK_DIST>

然后Zeppelin会查看$ SPARK_HOME / conf / spark-defaults.conf,你可以在那里定义jar:

spark.jars.packages                com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41

然后看看

http:// zepplin_url :4040 /环境/以下内容:

  

spark.jars 文件:/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

答案 5 :(得分:0)

另一种解决方案:

在conf / zeppelin-env.sh(对我来说位于/ etc / zeppelin中)添加以下行:

export SPARK_SUBMIT_OPTIONS="--packages com.databricks:spark-csv_2.10:1.2.0"

然后启动服务。