【问题标题】:How to load jar dependenices in IPython Notebook如何在 IPython Notebook 中加载 jar 依赖项
【发布时间】:2016-02-27 18:00:03
【问题描述】:

This page 激励我尝试使用 spark-csv 在 PySpark 中读取 .csv 文件 我发现了一些帖子,例如 this 描述如何使用 spark-csv

但我无法通过在启动时包含 .jar 文件或包扩展名来初始化 ipython 实例,这可以通过 spark-shell 完成。

也就是说,而不是

ipython notebook --profile=pyspark

我试过了

ipython notebook --profile=pyspark --packages com.databricks:spark-csv_2.10:1.0.3

但不支持。

请指教。

【问题讨论】:

    标签: csv apache-spark pyspark jupyter-notebook


    【解决方案1】:

    您可以简单地将其传递到PYSPARK_SUBMIT_ARGS 变量中。例如:

    export PACKAGES="com.databricks:spark-csv_2.11:1.3.0"
    export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"
    

    这些属性也可以在SparkContext/SparkSession和相应的JVM启动之前在你的代码中动态设置:

    packages = "com.databricks:spark-csv_2.11:1.3.0"
    
    os.environ["PYSPARK_SUBMIT_ARGS"] = (
        "--packages {0} pyspark-shell".format(packages)
    )
    

    【讨论】:

    • 这不会覆盖os.environ["PYSPARK_SUBMIT_ARGS"] 中已经存在的所有内容吗?我认为这需要提及,因为我花了很多时间来弄清楚发生了什么
    • 这不适用于 Kafka。我仍然遇到错误:java.lang.ClassNotFoundException: Failed to find data source: kafka. 代码:import os os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0 pyspark-shell'
    【解决方案2】:

    我相信您也可以将其作为变量添加到您的 spark-defaults.conf 文件中。所以像:

    spark.jars.packages    com.databricks:spark-csv_2.10:1.3.0
    

    这将在您每次启动驱动程序时将 spark-csv 库加载到 PySpark 中。

    显然零的答案更灵活,因为您可以在导入 PySpark 包之前将这些行添加到您的 PySpark 应用程序中:

    import os
    os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell'
    
    from pyspark import SparkContext, SparkConf
    

    这样,您只需导入脚本实际需要的包。

    【讨论】:

    • 如果您正在运行笔记本,这是迄今为止最便携的选项:我正在运行全火花笔记本版本,这可以同时解锁所有三种语言的 CSV 解析。跨度>
    • 我正在尝试导入包 mmlspark。在我的笔记本中使用以下内容。但是得到错误 mmlspark not found import os import sys os.environ["PYSPARK_SUBMIT_ARGS"] = \ "--packages Azure:mmlspark:0.13 \ pyspark-shell" import findspark findspark.add_packages(["Azure:mmlspark:0.13"] ) findspark.init()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2014-08-29
    相关资源
    最近更新 更多