我想在 Jupyter 笔记本中读取 Spark Avro 文件。
我已经构建了 Spark -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 笔记本时都给出 packages 命令。就像如果我必须使用 Spark-csv 包我就会这样做
pyspark
在终端中,它会打开一个带有spark-csv包的jupyter笔记本。我不必在那里专门给出spark-csv 的packages 命令。
但这似乎不适用于spark-avro。
注意: 1)。我已在配置设置中将 iphython/jupyter 笔记本命令配置为“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
有什么帮助吗?
最佳答案
正确的属性名称是 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
关于python - 使用 Pyspark Kernel 读取 Jupyter Notebook 中的 Spark Avro 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079846/