首页 文章

使用Pyspark内核阅读Jupyter笔记本中的Spark Avro文件

提问于
浏览
1

我想在Jupyter笔记本中阅读Spark Avro文件 .

我有火花-avro建成 .

当我进入我的目录并执行以下操作时

pyspark --packages org.apache.avro:avro-mapred:1.7.7,com.databricks:spark-avro_2.10:2.0.1

它能够在浏览器中打开一个jupyter笔记本,然后我可以运行以下命令并正确读取 .

sdf_entities = sqlContext.read.format("com.databricks.spark.avro").load("learning_entity.avro")
sdf_entities.cache().take(1)

但是,每次打开pyspark笔记本时,我都不想给出命令 . 就像我必须使用Spark-csv软件包一样

pyspark

在终端,它打开了一个带有spark-csv包的jupyter笔记本 . 我没有必要在那里专门给出spark-csv的packages命令 .

但这似乎不适用于spark-avro .

注意:1) . 我在配置设置中将iphython / jupyter notebook命令配置为“pyspark”,因此每当在终端中调用pyspark时,它会自动打开jyupyter笔记本 .

2) . 我还在spark / conf文件夹中的spark-conf文件中添加了spark-csv和spark-avro的路径 . 以下是spark-defaults.conf文件的外观:

# Example:
# spark.master                     spark://master:7077
# spark.eventLog.enabled           true
# spark.eventLog.dir               hdfs://namenode:8021/directory
# spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              12g
spark.executor.memory            3g
spark.driver.maxResultSize       3g
spark.rdd.compress               false
spark.storage.memoryFraction     0.5


spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value

spark.jars.packages    com.databricks:spark-csv_2.11:1.4.0
spark-jars.packages    com.databricks:spark-avro_2.10:2.0.1

有帮助吗?

1 回答

  • 1

    正确的属性名称是 spark.jars.packages (不是 spark-jars.packages ),并且应该将多个包作为单个逗号分隔列表提供,与命令行参数相同 .

    您还应该使用相同的Scala工件,它与用于构建Spark二进制文件的Scala版本相匹配 . 例如,使用Scala 2.10(Spark 1.x中的默认值):

    spark.jars.packages  com.databricks:spark-avro_2.10:2.0.1,com.databricks:spark-csv_2.10:1.5.0
    

相关问题