3

我正在尝试读取 pyspark 中的 avro 文件。从How to read Avro file in PySpark中发现 spark-avro 是最好的方法,但我不知道如何从他们的Github repo安装它。没有可下载的jar,我自己构建吗?如何?

它是在集群上运行的 Spark 1.6 (pyspark)。我没有设置它,所以对配置不太了解,但我有 sudo 访问权限,所以我想我应该能够安装东西。但是这台机器没有直接的互联网访问权限,所以需要手动复制和安装东西。

谢谢你。

4

2 回答 2

7

您可以在运行时添加spark-avro为包pysparkspark-submithttps ://github.com/databricks/spark-avro#with-spark-shell-or-spark-submit但这需要驱动程序上的互联网访问(然后驱动程序将分发所有文件给执行人)。

如果您在驱动程序上无法访问 Internet,则需要将spark-avro自己构建到一个胖 jar:

git clone https://github.com/databricks/spark-avro.git
cd spark-avro
# If you are using spark package other than newest, 
# checkout appropriate tag based on table in spark-avro README, 
# for example for spark 1.6:
# git checkout v2.0.1 
./build/sbt assembly

然后使用 pyspark shell 对其进行测试:

./bin/pyspark --jars ~/git/spark-avro/target/scala-2.11/spark-avro-assembly-3.1.0-SNAPSHOT.jar

>>> spark.range(10).write.format("com.databricks.spark.avro").save("/tmp/output")
>>> spark.read.format("com.databricks.spark.avro").load("/tmp/output").show()
+---+
| id|
+---+
|  7|
|  8|
|  9|
|  2|
|  3|
|  4|
|  0|
|  1|
|  5|
|  6|
+---+
于 2016-11-17T06:21:21.983 回答
0

应该可以

wget https://repo1.maven.org/maven2/org/apache/spark/spark-avro_2.11/${SPARK_VERSION}/spark-avro_2.11-${SPARK_VERSION}.jar -P $SPARK_HOME/jars/                                                        

echo spark.executor.extraClassPath $SPARK_HOME/jars/spark-avro_2.11-$SPARK_VERSION.jar >>  /usr/local/spark/conf/spark-defaults.conf                                                                    

echo spark.driver.extraClassPath $SPARK_HOME/jars/spark-avro_2.11-$SPARK_VERSION.jar >>  /usr/local/spark/conf/spark-defaults.conf

于 2020-01-02T14:56:43.277 回答